Mongoose:findOneAndUpdate返回奇怪的结构
返回正常结果Mongoose:findOneAndUpdate返回奇怪的结构,mongoose,Mongoose,返回正常结果 a = await db.a.findOneAndUpdate({id}, {...doc}, { upsert: true, new: true }); b = await db.b.findOneAndUpdate({id}, {...doc}, { upsert: true, new: true }); b返回奇怪的结果 {...} Mongoose没有在对象中返回文档,而是在_docobject中以奇怪的结构返回文档 另外
a = await db.a.findOneAndUpdate({id}, {...doc}, {
upsert: true,
new: true
});
b = await db.b.findOneAndUpdate({id}, {...doc}, {
upsert: true,
new: true
});
b返回奇怪的结果
{...}
Mongoose没有在对象中返回文档,而是在_docobject中以奇怪的结构返回文档
另外,将rawResult设置为false没有帮助
这些是a型和b型:
{
"$__":
{
"strictMode": true,
...
},
"isNew": false,
"_doc":
{
...
},
"$init": true
}
它原来是一个Mongoose bug…在杀死节点进程并重新启动它之后,它现在的行为正常。问题是,您没有提供findOneAndUpdate回调。根据,findOneAndUpdate…将找到的文档(如果有)返回回调。如果传递回调,则执行查询,否则返回查询对象 下面是他们提供的如何调用此函数的示例,请注意,这些示例没有调用回调函数,这与您调用回调函数返回查询的方式类似
它原来是一个Mongoose bug…在杀死节点进程并重新启动后,它现在运行正常。请共享您的模型。在我看来,您没有适当地使用mongoose,这可能是在查询之前等待的问题,这意味着结果就是查询的已解决承诺。在这种情况下,查询是所需的结果。另外,您的答案也没有解释为什么db.a返回正确的格式,而db.b返回错误的格式。
db.a = mongoose.model('a', (Schema, ObjectId) => new Schema({
objectid: ObjectId,
title: String
}));
db.b = mongoose.model('b', (Schema, ObjectId) => new Schema({
objectid: ObjectId,
text: String
}));
A.findOneAndUpdate(conditions, update, options, callback) // executes
A.findOneAndUpdate(conditions, update, options) // returns Query
A.findOneAndUpdate(conditions, update, callback) // executes
A.findOneAndUpdate(conditions, update) // returns Query
A.findOneAndUpdate() // returns Query