我为自己的网站创建了一个注册系统,该系统向注册用户发送确认电子邮件,其确认代码为他们在mongoose数据库中的_id
帐户。
然后,返回我的网站,他们输入确认码,我想使用.update()
方法更改 confirmed
<0
<{1}}属性的值/ strong>到该用户的数据库中 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 }
答案 0 :(得分:1)
我解决了这个问题。我没有使用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'});
});
这有效:)
答案 1 :(得分:1)
不确定这是否有帮助,但我想说更新方法有$ set运算符$set documentation .. $ set运算符用指定的值替换字段的值。因此,如果您仍然想使用update(),那么可能会有这样的工作:
db.catalog.update({"_id" : getid},{$set : {"confirmed" : "1"}})
这应该会更改“已确认”字段的值。