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

Javascript 无法使用.update()更新mongoose属性,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我已经为我的网站创建了一个注册系统,向注册用户发送确认电子邮件,确认代码是mongoose数据库中他们帐户的\u id 然后,回到我的站点,他们输入确认代码,我想使用.update()方法将该用户数据库中的confirfied属性值从0更改为1 这是我的密码: router.post('/confirmAcc',function(req, res, next) { var getid=req.body.confirmcode; console.log(getid); var req

我已经为我的网站创建了一个注册系统,向注册用户发送确认电子邮件,确认代码是mongoose数据库中他们帐户的
\u id

然后,回到我的站点,他们输入确认代码,我想使用
.update()
方法将该用户数据库中的
confirfied
属性值从
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(),而是使用了:


这很有效:)

不确定这是否有帮助,但我想说的是更新方法有一个$set操作符。。$set运算符用指定的值替换字段的值。因此,如果您仍然想使用update(),那么类似的方法可能会奏效:

db.catalog.update({“\u id”:getid},{$set:{“已确认”:“1”}})


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

你是说如果你用上述代码中的查找替换更新,你会得到一条记录吗?事实上,你的评论刚刚解决了我的问题。我决定不使用update,只使用findOne()。然后我使用了
doc.credentials.confirmed=“1”
,它被更新了!谢谢那也行。我现在意识到它最初不起作用,因为“确认”不在引用中。谢谢你的例子!请注意,它将加载对象(客户端)。更新不会加载对象,这可以避免在对象较大时缺少性能。
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'});
});