无法使用.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"}})

这应该改变“确认”字段的价值。