Mongoose中findOneAndUpdate不返回最新数据的原因排查
问题原因及解决方法
原因:findOneAndUpdate方法默认返回更新前的原始文档,这是该方法的默认行为,所以即使数据库数据已成功更新,你拿到的post变量仍是修改前的旧数据。
解决方法:
- 在
findOneAndUpdate的第三个参数中添加new: true配置,让方法返回更新后的文档:
let post = await Post.findOneAndUpdate( {'name':'Existing Name'}, {'name':'My New Name'}, { new: true } ); console.log(JSON.stringify(post,null,2));
- 也可以使用等价的
returnOriginal: false配置,效果和new: true完全一致:
let post = await Post.findOneAndUpdate( {'name':'Existing Name'}, {'name':'My New Name'}, { returnOriginal: false } );
如果使用的是原生MongoDB驱动而非Mongoose,则需要指定returnDocument: 'after'选项来获取更新后的文档。
内容的提问来源于stack exchange,提问作者ololo
相关产品推荐
相关产品推荐

