最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mongoose find 查詢返回json數(shù)據(jù)處理方式

 更新時間:2023年04月05日 15:00:22   作者:yolo瑩  
這篇文章主要介紹了Mongoose find 查詢返回json數(shù)據(jù)處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

前言

Mongoose find方法,打印看著返回的是json數(shù)據(jù),實際返回的是Mongoose實例,為了方便自定義拓展或操作鏈式操作。

需求

如圖復(fù)制按鈕,點擊復(fù)制按鈕填寫信息,復(fù)制出有相同屬性的數(shù)據(jù)模型;

處理思路

傳參:{id:"", //被復(fù)制的數(shù)據(jù)模型id ...(其他填寫參數(shù)) };通過id查詢被復(fù)制數(shù)據(jù)模型所有數(shù)據(jù),刪除數(shù)據(jù)id,刪除屬性id,其他填寫參數(shù)覆蓋,然后寫庫。

遇到問題

代碼如下,執(zhí)行時,直接報堆棧溢出,獲取的modalData不是json數(shù)據(jù)不能modalData.props或{...modalData}

  /**
   * 根據(jù)id查詢數(shù)據(jù)模型
   * @param id 數(shù)據(jù)模型id
   */
  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;
  }
 
/**
   * 復(fù)制數(shù)據(jù)模型
   * @param dataModel 數(shù)據(jù)模型
   */
  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))處理一遍

缺點:數(shù)據(jù)復(fù)雜時會導(dǎo)致部分數(shù)據(jù)丟失或轉(zhuǎn)義

2.Mongoose find 查詢時用.toObject()或.toJSON()將數(shù)據(jù)轉(zhuǎn)換為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
  }

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MongoDB通配符索引的用法實例

    MongoDB通配符索引的用法實例

    這篇文章主要給大家介紹了關(guān)于MongoDB通配符索引的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Mongodb自增id實現(xiàn)方法

    Mongodb自增id實現(xiàn)方法

    這篇文章主要介紹了Mongodb自增id實現(xiàn)方法,分析了MongoDB數(shù)據(jù)庫自增ID的原理與實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2016-07-07
  • Mongodb使用$bit方法更新字段的代碼詳解

    Mongodb使用$bit方法更新字段的代碼詳解

    Mongodb的UPDATE提供了各種各樣的方法,包括字段數(shù)值增加,數(shù)組更新等,本文介紹Mongodb使用$bit方法更新字段,文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下
    2024-06-06
  • Mongodb批量刪除gridfs文件實例

    Mongodb批量刪除gridfs文件實例

    這篇文章主要介紹了Mongodb批量刪除gridfs文件實例,本文根據(jù)生產(chǎn)環(huán)境實際需求總結(jié)而來,需要的朋友可以參考下
    2015-01-01
  • mongodb操作的模塊手動封裝

    mongodb操作的模塊手動封裝

    這篇文章主要介紹了mongodb操作的模塊手動封裝的相關(guān)資料,這里提供實例幫助大家實現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-08-08
  • mongodb基礎(chǔ)之用戶權(quán)限管理實例教程

    mongodb基礎(chǔ)之用戶權(quán)限管理實例教程

    這篇文章主要給大家介紹了關(guān)于mongodb基礎(chǔ)之用戶權(quán)限管理的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • MongoDB查詢性能優(yōu)化驗證及驗證

    MongoDB查詢性能優(yōu)化驗證及驗證

    這篇文章主要介紹了MongoDB查詢性能驗證及優(yōu)化的相關(guān)知識,涉及到MongoDB 查詢優(yōu)化原則知識點,本文介紹的非常詳細,具有參考借鑒價值,感興趣的朋友一起學(xué)習(xí)吧
    2016-02-02
  • Pycharm連接MongoDB數(shù)據(jù)庫安裝教程詳解

    Pycharm連接MongoDB數(shù)據(jù)庫安裝教程詳解

    這篇文章主要介紹了Pycharm連接MongoDB數(shù)據(jù)庫安裝教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • MongoDB TTL索引的實例詳解

    MongoDB TTL索引的實例詳解

    這篇文章主要介紹了 MongoDB TTL索引的實例詳解的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • 為MongoDB數(shù)據(jù)庫注冊windows服務(wù)

    為MongoDB數(shù)據(jù)庫注冊windows服務(wù)

    這篇文章介紹了為MongoDB數(shù)據(jù)庫注冊windows服務(wù)的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06

最新評論

扎鲁特旗| 安陆市| 黄山市| 清水河县| 通榆县| 宁武县| 荣成市| 霍州市| 浦江县| 灵台县| 醴陵市| 张家川| 南宁市| 汉源县| 玉门市| 石景山区| 安徽省| 云浮市| 上饶县| 醴陵市| 江都市| 博湖县| 吐鲁番市| 繁峙县| 甘泉县| 平乐县| 灵石县| 岑巩县| 自治县| 资溪县| 湖口县| 盈江县| 河池市| 正蓝旗| 临清市| 久治县| 湄潭县| 孙吴县| 长汀县| 景东| 安国市|