无法使用.update()更新mongoose属性
我为我的网站创build了一个注册系统,向注册用户发送一封确认邮件,其确认代码是在mongoose数据库中帐户的_id
。
然后,回到我的网站,他们input他们的确认代码,我想要使用.update()
方法将该用户的数据库中的confirmed
属性的值从0
更改为1
。
这是我的代码:
router.post('/confirmAcc',function(req, res, next) { var getid=req.body.confirmcode; console.log(getid); var requis = { "_id": getid }; User.update(requis, {confirmed: '1'}, function (err, doc){ console.log(doc); if (err) throw err; }); res.render('index', {title:'nDoto'}); });
数据库没有匹配id
问题,但不会将现有的“ confirmed
”属性更新为“ 1
”。
我不知道为什么。
另外,当我运行代码,并把我的确认代码和该函数运行时,控制台写道:
{ ok: 0, n: 0, nModified: 0 }
我解决了这个问题。 而不是使用User.update(),我用:
router.post('/confirmAcc',function(req, res, next) { var getid=req.body.confirmcode; var requis = { "_id": getid }; User.findOne(requis, function (err, doc){ doc.credentials.confirmed="1"; doc.save(); if (err) throw err; }); res.render('index', {title:'nDoto'}); });
这工作:)
不知道这是否会有所帮助,但我想说,更新方法有$ set操作$ set文件 .. $ set操作符用指定的值replace字段的值。 所以,如果你仍然想使用update()也许这样的工作:
db.catalog.update({"_id" : getid},{$set : {"confirmed" : "1"}})
这应该改变“确认”字段的价值。