a = await db.a.findOneAndUpdate({id}, {...doc}, {
upsert: true,
new: true
});
b = await db.b.findOneAndUpdate({id}, {...doc}, {
upsert: true,
new: true
});
a返回正常结果
{...}
b返回奇怪的结果
{
"$__":
{
"strictMode": true,
...
},
"isNew": false,
"_doc":
{
...
},
"$init": true
}
Mongoose不会以文档的形式返回文档,而是以_doc
对象内的一种奇怪结构返回文档。
P.S。,将rawResult
设置为false不会带来帮助。
这些是模型a和模型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
}));
原来是猫鼬的bug ...杀死了Node进程并重新启动它之后,它现在表现正常。
答案 0 :(得分:0)
原来是猫鼬的bug ...杀死了Node进程并重新启动它之后,它现在表现正常。
答案 1 :(得分:-1)
问题是,您没有提供findOneAndUpdate()
的回调。根据{{3}},findOneAndUpdate()
“ ...将找到的文档(如果有)返回到回调。如果传递了callback
,则查询执行,否则返回查询对象。” < / p>
下面是他们提供的有关如何调用此函数的示例,并请注意未调用callback
(类似于您的调用方式)的示例将返回Query
。
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