2017-07-15 84 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 
    }); 
});