<分区>
我的一系列文档 looks like this一旦从后端检索:
41:
$__: {strictMode: true, selected: {…}, shardval: null, saveError: null, validationError: {…}, …}
$init: true
$locals: {}
errors: {undefined: {…}, files: {…}}
isNew: false
_doc: {status: "Finished", isOnHold: false, requirements: Array(0), files: Array(0), reportFileIds: Array(1), …}
__proto__: Object
每个项目的实际文档都在 _doc 下。这是 mongoose.Find 查询的结果:
let query = Job.find({
_id: {
$in: data.jobs
}
});
let result = await query.exec();
现在,如果我尝试在发送之前获取该结果数组的项目,它看起来不像在前端实际建模的内容,这很奇怪。
有什么方法可以使用 mongoose.find 获取纯文档数组吗?我不能使用聚合查询,因为我不想手动投影每个可能的属性。
编辑:
这不是大声喊叫的重复,传播语法与它无关,你看到我在任何地方提到传播语法吗?这个和mongoose驱动有关。
Edit2:我最终遍历数组并在每个项目上调用 .toObject:
let jobs = await query.exec();
let result = [];
for (let doc of jobs) {
result.push(doc.toObject());
}
return result;
Edit3:最终调用了 query.lean().exec()
,它做了正确的事情。我过去基于一个可能已经过时的 stackoverflow 示例使用精益部分作为参数,它只会返回文档的 ID。但是像上面那样调用它可以正常工作。