【问题标题】:How to get array of json objects rather than mongoose documents如何获取 json 对象数组而不是猫鼬文档
【发布时间】:2012-08-26 00:10:45
【问题描述】:

当我执行如下.find 操作时:

Collection.find({name: 'Erik'}, function (err, docs) {
   // do momething
});

'docs' 变量填充了一组功能齐全的猫鼬文档。但我需要得到一组纯 JSON 对象。

我知道我可以通过 forEach 循环遍历“docs”数组并使用 .toJSON() 方法获取对象。 mongoose 是否支持这个功能,我有兴趣吗?

【问题讨论】:

  • 纯 JavaScript 对象数组

标签: node.js mongodb express mongoose


【解决方案1】:

如果您使用的是 Mongoose 3.x,您可以使用 lean 查询选项来执行此操作:

Collection.find({name: 'Erik'}).lean().exec(function (err, docs) {
    // docs are plain javascript objects instead of model instances
});

【讨论】:

  • 请注意,leantoJSON 不同,因为它从 Mongo 返回原始转储(意味着不包括 virtuals)。请参阅this 了解更多信息
  • 哇,他们很难找到这个。谢谢!
【解决方案2】:
.exec(function(err, docs){
    docs= docs.map(o => o.toObject());

这将包括 virtualsgetter

【讨论】:

    【解决方案3】:

    通过结果映射并将每个结果转换为 JS 对象:

    const result = await model.find({some: 'query'});
    return result.map((r) => r.toObject());
    

    【讨论】:

      猜你喜欢
      • 2018-09-10
      • 1970-01-01
      • 1970-01-01
      • 2020-03-01
      • 1970-01-01
      • 2021-10-15
      • 2019-09-21
      • 1970-01-01
      • 2020-04-30
      相关资源
      最近更新 更多