无法使用.update()更新mongoose属性

时间:2016-01-23 19:50:13

标签: javascript node.js mongodb

我为自己的网站创建了一个注册系统,该系统向注册用户发送确认电子邮件,其确认代码为他们在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 }

2 个答案:

答案 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"}})

这应该会更改“已确认”字段的值。