无法更新mongodb中的单个数据

时间:2019-05-19 15:22:17

标签: node.js json mongodb api express

我正在尝试使用id作为参数来更新单个数据,但是当我将数据作为JSON对象发送时,当我控制台记录传递的JSON对象时,它将返回null。

这就是我更新数据所要做的。

// Update By Id
router.put('/:id', (req, res) => {
    if (!ObjectId.isValid(req.params.id)) {
        return res.status(400).send(`No records with given id : ${req.params.id}`);
    }
    var emp = {
        name : req.body.name,
        position : req.body.position,
        office : req.body.office,
        salary : req.body.salary
    };

    Employee.findByIdAndUpdate({_id:req.params.id}, {$set : emp}, {new : true}, (err, doc) => {
        if(!err) { res.send(doc); }
        else { console.log('Error in Employee Update : ' + JSON.stringify(err, undefined, 2)); }
    });
});

我传递到请求正文中的数据。

{
    "name": "Some Name",
    "position": "A Position",
    "office": "Location Name",
    "salary": 60000
}

当我尝试控制台日志时,我传递的数据返回未定义的值,并且所有数据均更新为空。

console.log(emp.name);

1 个答案:

答案 0 :(得分:0)

我不知道如何,但是通过一些修改和重新启动服务器,以上代码可以正常工作。

这是我修改过的

Employee.findByIdAndUpdate({_id:req.params.id}, {$set : emp}, {new : true}, (err, doc)

收件人

Employee.findByIdAndUpdate( req.params.id , {$set : emp}, {new : true}, (err, doc) 

感谢 Fanpark