欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

Mongoose find方法,打印看著返回的是json數(shù)據(jù),實(shí)際返回的是Mongoose實(shí)例,為了方便自定義拓展或操作鏈?zhǔn)讲僮鳌?/p>

需求

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

處理思路

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

遇到問(wèn)題

代碼如下,執(zhí)行時(shí),直接報(bào)堆棧溢出,獲取的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))處理一遍

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

2.Mongoose find 查詢時(shí)用.toObject()或.toJSON()將數(shù)據(jù)轉(zhuǎn)換為json,修改findById方法的return;

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

3.Mongoose find 查詢后.lean().exec()鏈?zhǔn)教幚?/p>

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é)

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

相關(guān)文章

  • MongoDB運(yùn)行狀態(tài)監(jiān)控、性能分析工具mongostat詳解

    MongoDB運(yùn)行狀態(tài)監(jiān)控、性能分析工具mongostat詳解

    這篇文章主要介紹了MongoDB運(yùn)行狀態(tài)監(jiān)控、性能分析工具mongostat詳解,mongostat是mongdb自帶的狀態(tài)檢測(cè)工具,在命令行下使用,它會(huì)間隔固定時(shí)間獲取mongodb的當(dāng)前運(yùn)行狀態(tài),并輸出,本文詳細(xì)講解了它的使用,需要的朋友可以參考下
    2015-07-07
  • Windows系統(tǒng)下安裝MongoDB與Robomongo環(huán)境詳解

    Windows系統(tǒng)下安裝MongoDB與Robomongo環(huán)境詳解

    這篇文章主要給大家介紹了在Windows系統(tǒng)下安裝MongoDB與Robomongo環(huán)境的相關(guān)資料,文中介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-04-04
  • MongoDB的備份(mongodump)與恢復(fù)(mongorestore)

    MongoDB的備份(mongodump)與恢復(fù)(mongorestore)

    在使用MongoDB時(shí),數(shù)據(jù)備份與恢復(fù)是非常重要的一環(huán),以防止數(shù)據(jù)丟失或意外刪除,本文就來(lái)介紹一下MongoDB的備份(mongodump)與恢復(fù)(mongorestore),感興趣的可以了解一下
    2023-12-12
  • centos離線安裝mongodb-database-tools方法詳解

    centos離線安裝mongodb-database-tools方法詳解

    這篇文章主要介紹了centos離線安裝mongodb-database-tools方法詳解的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • CentOS 安裝 Mogodb的步驟(在線&&離線兩種)

    CentOS 安裝 Mogodb的步驟(在線&&離線兩種)

    這篇文章主要介紹了CentOS 安裝 Mogodb的步驟(在線&&離線兩種),需要的朋友可以參考下
    2017-03-03
  • MongoDB數(shù)據(jù)庫(kù)文檔操作方法(必看篇)

    MongoDB數(shù)據(jù)庫(kù)文檔操作方法(必看篇)

    下面小編就為大家?guī)?lái)一篇MongoDB數(shù)據(jù)庫(kù)文檔操作方法(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • MongoDB如何查看版本信息詳解

    MongoDB如何查看版本信息詳解

    這篇文章主要給大家介紹了關(guān)于MongoDB如何查看版本信息的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • MongoDB如何正確中斷正在創(chuàng)建的索引詳解

    MongoDB如何正確中斷正在創(chuàng)建的索引詳解

    這篇文章主要給大家介紹了關(guān)于MongoDB如何正確中斷正在創(chuàng)建的索引的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • MongoDB分片的實(shí)現(xiàn)示例

    MongoDB分片的實(shí)現(xiàn)示例

    MongoDB的分片是一種橫向擴(kuò)展數(shù)據(jù)庫(kù)的方式,可以將數(shù)據(jù)分散存儲(chǔ)在多臺(tái)服務(wù)器上,從而提高數(shù)據(jù)庫(kù)的處理能力和可用性,本文就來(lái)介紹一下如何實(shí)現(xiàn),感興趣的可以了解一下
    2023-12-12
  • MongoDB分片集群部署詳解

    MongoDB分片集群部署詳解

    這篇文章主要介紹了MongoDB分片集群部署詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05

最新評(píng)論