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() 不更新/复制数据库

MongoDB - Mongoose 查询 findOneAndUpdate() 不更新/复制数据库

findOneAndUpdate 未在 MongoDb 中返回更新的文档 [重复]