Mongodb findOneAndUpdate不工作

Mongodb findOneAndUpdate不工作,mongodb,Mongodb,我正在尝试更新mongodb集合中的文档,但它对我无效。这是一个函数,所有字段都将被发送到后端。我使用mlab在线mongo db router.post( '/accept', (req,res) => { const leaveFields = {}; leaveFields._id = req.body.id; leaveFields.name = req.body.name; leaveFields.reason = req.body.rea

我正在尝试更新mongodb集合中的文档,但它对我无效。这是一个函数,所有字段都将被发送到后端。我使用mlab在线mongo db

router.post(
  '/accept',
  (req,res) => {
    const leaveFields = {};
    leaveFields._id = req.body.id;
    leaveFields.name = req.body.name;
    leaveFields.reason = req.body.reason;
    leaveFields.from = req.body.from;
    leaveFields.to = req.body.to;
    leaveFields.user_id = req.body.user_id;
    leaveFields.leaveType = req.body.leaveType;
    console.log(req.body.id);
    Leave.find({user_id:req.body.user_id})  //{ "_id":ObjectId("req.body.id") }
      .then(leave =>{
        if(leave){
          Leave.findOneAndUpdate(
            {_id : req.body.id},
            {$set : leaveFields},
            {new : true}
        )}else{
          res.status(400).json(errors);
        }
      }
        )
      .catch(err=>res.status(404).json({ noleavefound: 'No leaves found' }));

在这里,您将_id设置为leavefields对象和

const leaveFields = {};
leaveFields._id = req.body.id;
在这里,您还将_id字段传递给您的更新

{$set : leaveFields}
_id字段是一个不可变的字段。因此,排除_id字段,然后进行检查