返回顶部
首页 > 资讯 > 数据库 >Mongoose find 查询返回json数据处理方式
  • 111
分享到

Mongoose find 查询返回json数据处理方式

MongoosefindMongoose查询查询返回json数据处理 2023-04-06 05:04:21 111人浏览 泡泡鱼
摘要

目录前言需求处理思路遇到问题解决方案总结前言 MonGoose find方法,打印看着返回的是JSON数据,实际返回的是Mongoose实例,为了方便自定义拓展或操作链式操作。 需求 如图复制按钮,点击复制按钮填写信息,

前言

MonGoose find方法,打印看着返回的是JSON数据,实际返回的是Mongoose实例,为了方便自定义拓展或操作链式操作。

需求

如图复制按钮,点击复制按钮填写信息,复制出有相同属性的数据模型;

Mongoose find 查询返回json数据处理方式

处理思路

传参:{id:"", //被复制的数据模型id ...(其他填写参数) };通过id查询被复制数据模型所有数据,删除数据id,删除属性id,其他填写参数覆盖,然后写库。

遇到问题

代码如下,执行时,直接报堆栈溢出,获取的modalData不是json数据不能modalData.props或{...modalData}

Mongoose find 查询返回json数据处理方式

  
  async findById(id: string | string[]) {
    let res
    try {
      if (Array.isArray(id)) {
        res = await this.dataModel.find({ _id: { $in: id } })
      } else {
        res = await this.dataModel.findById(id)
      }
    } catch (error) {
      throw new HttpException(error, httpstatus.INTERNAL_SERVER_ERROR)
    }
    return res;
  }
 

  async copyDataModal(dataModel: CopyDataModelDto) {
    let res
    try {
      const { id } = dataModel
      const modalData = await this.findById(id)
      if (modalData) {
        modalData.props = (modalData.props || []).map((ele: any) => {
          return dataMasking(ele, ['_id'])
        })
        const aDDData = dataMasking({ ...modalData, ...dataModel }, ['_id', 'id', '__v'])
        // res = await this.add(addData)
        res=addData
      }
      
 
    } catch (error) {
      throw new HttpException(error, HttpStatus.INTERNAL_SERVER_ERROR)
    }
    return res
  }

解决方案

1.modalData=JSON.parse(JSON.stringify(modalData))处理一遍

缺点:数据复杂时会导致部分数据丢失或转义

2.Mongoose find 查询时用.toObject()或.toJSON()将数据转换为json,修改findById方法的return;

return res?res.toObject():res
return res?res.toJSON():res

3.Mongoose find 查询后.lean().exec()链式处理

async findById(id: string | string[]) {
    let res
    try {
      if (Array.isArray(id)) {
        res = await this.dataModel.find({ _id: { $in: id } }).lean().exec()
      } else {
        res = await this.dataModel.findById(id).lean().exec()
      }
    } catch (error) {
      throw new HttpException(error, HttpStatus.INTERNAL_SERVER_ERROR)
    }
    return res
  }

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

您可能感兴趣的文档:

--结束END--

本文标题: Mongoose find 查询返回json数据处理方式

本文链接: https://lsjlt.com/news/201292.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作