2017-07-15 81 views
0
app.get('/changePass', function(req, res) { 
password = req.body.password; 
password1 = req.body.password1; 
xyz = req.body.xyz; 

User.find({ email: xyz, password: password }, function(err, data) { 
    if (err) { 
     throw err; 
    } 
    if (data.length === 0) { 
     return res.json({ success: false, data: 'please enter valid 
    Old password' }) 
    } else { 

     // User.update({ password: password }, { 
     //  $set: { 
     //   password: password1 
     //  } 
     // }); 
     var usr = new User(); 
     usr.update({ "password":password }, password1, { upsert:true 
    }); 
     //usr.password = password; 
     usr.save(function(err, data) { 
      if (err) 
       throw err; 
      return res.json({ success: true, data: 'password changed 
successfully' }); 
     }) 
    } 
    }) 

我如何在mongodb中更新密码我将密码与密码相匹配并将密码更新为password1.此密码正在给我提示,请输入有效的旧密码。 xyz是包含电子邮件的cookie。如何在mongodb中更新密码

+0

注释代码实际上使用正确的方法(除非你忘了回调),你也不用做了'.findOne()'使用'以来User.update()'采取的第一个参数时作为匹配文档的“查询”。 'usr.update()'是错误的,因为作为一个“实例”没有“查询”部分。你仍然应该在'usr.update({“$ set”:{“password”:password1},function(err){..')中使用'$ set'。但是,你不需要在另一个地方表单更好,你也不希望明文发送纯文本密码,或以这种方式存储它们。 –

回答

0

您应该使用模型上的findOne来返回userObject。 然后,您可以更新与常规JavaScript对象一样的对象,并使用.save功能保存它。

User.findOne({email: xyz, password: req.body.password1}, function(err, user){ 
if(err)return handleErr(err); 
user.password = req.body.password2; 
user.save(function(err){ 
    if(err)return handleErr(err); 
    //user has been updated 
    }); 
});