首页 > 解决方案 > 如何使用电子邮件而不是 id 更新 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'}

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

标签: node.jsmongodb

解决方案


{ email: userEmail } 在您的代码中执行此操作

export.update_member = 函数(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'}) 
        };
    });
};

推荐阅读