如何使用电子邮件而不是id更新mongodb文档?

时间:2018-12-03 10:35:42

标签: node.js mongodb

我有一个nodeJs应用程序来执行CRUD操作。除了更新(我使用电子邮件)之外,其他一切都很好。

当我通过邮递员尝试时,它返回202-确定,但是当我在MongoDb中检查该文档时,它没有被更新,并且保留了旧的值/名字。我一直在这里搜索,发现了一些提示,但是它们没有帮助

crud_controller.js

exports.update_member = function(req, res) {

    var userEmail = req.body.email;

    User.update({ userEmail }, {$set: req.body}, {multi: true}, function(err, user) {
        console.log(`user: ${userEmail} req.body:  ${JSON.stringify(req.body)} );

        if (err) {
            return res.json({success: false, msg: 'Cannot Update User'});
        }       
        if (!user) {
            return res.status(404).json({success: false, msg: 'User not found'});
        }  
        else { 
            res.json({success: true, msg: 'User has been updated'}) 
        };
    });
};

我一直在尝试: {new:true} 和SO上的其他选项,可以作为几个问题的答案,但没有一个有帮助。

这是节点文件的console.log:

user: ramirezrodgers@xxxx.com 
req.body: {"email":"ramirezrodgers@xxxx.xy","firstname":"test5"}

我也得到了成功的答复:

{success: true, msg: 'User has been updated'}

实际上,一切看起来都很好。我要去哪里错了?

1 个答案:

答案 0 :(得分:2)

  

{电子邮件:userEmail}在您的代码中完成

exports.update_member = function(req,res){

    var userEmail = req.body.email;

    User.update({ email: userEmail }, {$set: req.body}, {multi: true}, function(err, user) {
        console.log(`user: ${userEmail} req.body:  ${JSON.stringify(req.body)} );

        if (err) {
            return res.json({success: false, msg: 'Cannot Update User'});
        }       
        if (!user) {
            return res.status(404).json({success: false, msg: 'User not found'});
        }  
        else { 
            res.json({success: true, msg: 'User has been updated'}) 
        };
    });
};