如何获取 json 对象数组而不是猫鼬文档
Posted
技术标签:
【中文标题】如何获取 json 对象数组而不是猫鼬文档【英文标题】:How to get array of json objects rather than mongoose documents 【发布时间】:2012-08-26 00:10:45 【问题描述】:当我执行如下.find
操作时:
Collection.find(name: 'Erik', function (err, docs)
// do momething
);
'docs' 变量填充了一组功能齐全的猫鼬文档。但我需要得到一组纯 JSON 对象。
我知道我可以通过 forEach 循环遍历“docs”数组并使用 .toJSON() 方法获取对象。 mongoose 是否支持这个功能,我有兴趣吗?
【问题讨论】:
纯 javascript 对象数组 【参考方案1】:如果您使用的是 Mongoose 3.x,您可以使用 lean
查询选项来执行此操作:
Collection.find(name: 'Erik').lean().exec(function (err, docs)
// docs are plain javascript objects instead of model instances
);
【讨论】:
请注意,lean
与 toJSON
不同,因为它从 Mongo 返回原始转储(意味着不包括 virtuals
)。请参阅this 了解更多信息
哇,他们很难找到这个。谢谢!【参考方案2】:
.exec(function(err, docs)
docs= docs.map(o => o.toObject());
这将包括 virtuals 和 getter
【讨论】:
【参考方案3】:通过结果映射并将每个结果转换为 JS 对象:
const result = await model.find(some: 'query');
return result.map((r) => r.toObject());
【讨论】:
以上是关于如何获取 json 对象数组而不是猫鼬文档的主要内容,如果未能解决你的问题,请参考以下文章