使用Node.js操作MongoDB时数据更新存在延迟问题求助
解决Node.js中MongoDB findOneAndUpdate返回滞后的问题
嘿,我来帮你理清楚这个问题——其实你的Update函数完全没问题,锅不在它身上😉
你遇到的这个“滞后”现象,本质是MongoDB的findOneAndUpdate方法的默认行为导致的:它默认返回的是更新之前的旧文档,而不是更新后的新文档。所以你现在接口返回的data其实是更新前的数据,数据库已经成功更新了,但你拿到的是旧值,自然会觉得“下一次请求才拿到新结果”。
解决方法很简单:添加new: true选项
只需要在findOneAndUpdate的第三个参数位置加上{ new: true },就能让它返回更新后的文档了。修改后的代码如下:
Datas.findOneAndUpdate( {"_id": req.body._id}, Update(req.body), { new: true } // 关键:让方法返回更新后的文档 ).then((data) => { res.json({ data }) })
如果你的更新操作需要触发Schema里的验证规则,可以再加上runValidators: true,变成{ new: true, runValidators: true },不过核心还是new: true这个选项。
再确认下你的Update函数:它的作用是动态构建只包含非空字段的更新对象,这个逻辑是合理的,不会导致返回滞后的问题,完全可以保留。
内容的提问来源于stack exchange,提问作者Ashwin Joshy
相关产品推荐
相关产品推荐

