首页 > 解决方案 > Mongoose:findOneAndUpdate 返回奇怪的结构

问题描述

  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

PS,设置rawResultfalse 没有帮助。

这些是模型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
}));

原来是Mongoose的bug……杀死Node进程并重新启动后,它现在表现正常。

标签: mongoose

解决方案


原来是Mongoose的bug……杀死Node进程并重新启动后,它现在表现正常。


推荐阅读