无法访问从猫鼬fineOne()返回的json中的键[重复]

Posted

技术标签:

【中文标题】无法访问从猫鼬fineOne()返回的json中的键[重复]【英文标题】:Can't access keys in a json that is returned from mongoose fineOne() [duplicate] 【发布时间】:2019-04-23 06:33:05 【问题描述】:

我遇到了一个奇怪的问题。 我已经使用 mongoose 在我的 mongoDB 中搜索并找到了一个文档,方法是使用 model.findOne(),如下所示:

Model.findOne(
      ID: ID
    ).then(existingDoc => 
      console.log(existingDoc );
      res.send(existingDoc );
    );

现在,到目前为止一切正常,它发送了我期望得到的 json。看起来像这样:


  "_id": "5bf388cf170a974770c5c942",
  "ID": "11/2018",
  "date": "2018-11-20T04:08:47.997Z",
  "total": 
    "total_market_cap": [
      64301.06256298704
    ]
  

问题是当我尝试访问这些值时:

 console.log(existingDoc.total);

我不确定。也尝试使用:

 console.log(existingDoc['total']);

我仍然不确定。

它为除 _id 和 __v 之外的所有内容返回未定义。就像它是一个空对象,尽管它不是。

【问题讨论】:

【参考方案1】:

你能不能试着把它转换成Object

Model.findOne(
      ID: ID
    ).then(existingDoc => 
      console.log(existingDoc );
      let newdoc = existingDoc.toObject();
      console.log(newdoc.myProperty)
      res.send(existingDoc );
    );

【讨论】:

成功了!虽然我不知道为什么。当我在现有文档上使用 typeof 时,它已经是一个对象。谢谢! 你能添加更多关于这种行为的解释吗?看起来很有趣。 Mongoose 文档说此方法将文档转换为纯 js 对象。有了plan js对象后,我们就可以迭代属性了。 mongoosejs.com/docs/api.html#document_Document-toObject

以上是关于无法访问从猫鼬fineOne()返回的json中的键[重复]的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法从猫鼬返回数据?打字稿,NestJS

如何从猫鼬模型制作graphql?

从猫鼬中的数组中删除元素

从猫鼬中的数组对象中选择特定项目

从猫鼬聚合管道中的数组数组中获取单个数组

从猫鼬的多个集合中获取数据?