findOneAndUpdate在mongodb / nodejs中不起作用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了findOneAndUpdate在mongodb / nodejs中不起作用相关的知识,希望对你有一定的参考价值。
我正在尝试使用nodejs更新mongodb中的记录,但是它不起作用我正在另一侧获取数据,并且一切似乎都可以正常运行,但它只是不会更新记录
我的服务器端代码是
console.log('here',req.params.userId )
User.findOneAndUpdate( _id: req.params.userId , $set:req.body, new: true , function (err, users)
if (err)
res.send(req.params.userId);
res.json(users);
);
它返回一个空值,我不知道为什么。任何帮助将不胜感激。
答案
这是因为Mongo的ObjectId()在req.body中呈现为字符串:
执行此操作:
console.log('here',req.params.userId )
User.findOneAndUpdate( _id: new ObjectId(req.params.userId) , $set:req.body, new: true , function (err, users)
if (err) res.send(req.params.userId);
res.json(users);
);
您可以从bson包中要求ObjectId当我使用TypeScript时,我在纯javascript中使用的导入为import ObjectId from 'bson';
应该为import ObjectId = require('bson');
另一答案
您可以那样做:
User.findOneAndUpdate(
_id: new ObjectId(req.params.userId) ,
...req.body,
new: true
)
以上是关于findOneAndUpdate在mongodb / nodejs中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB中updateOne超过findOneAndUpdate的用例[重复]
MongoDB findOneAndUpdate 返回 null
MongoDB findOneAndUpdate 返回 null
MongoDB - Mongoose 查询 findOneAndUpdate() 不更新/复制数据库