mongodb update()不会工作

时间:2014-12-29 07:23:58

标签: node.js insert mongoose

首先我创建了猫鼬模式:

var cardSchema = mongoose.Schema({
  userId: String,
  imageUrl: String
})

然后我定义了模型:

var Card = mongoose.model('Card', cardSchema)

然后我创建了一张新卡片:

var newCard = new Card({
   userId: "bablaba"
});

然后新卡正确保存(我测试过):

newCard.save(function(err,theCard){
  if(err) return console.log(err);
  console.log("saved");
  console.log(theCard);
  })

现在我需要更新卡中的信息。我想添加/插入 imageUrl到保存的新卡中。 以下是我尝试过的几种方法:

1

Card.where({ _id: _id }).update({
   $set: {imageUrl:"blablab"}
 });

2

Card.update(_id,{$set:{imageUrl:"balbalab"}})

3

Card.update({_id: updateInfo._id}, {note0:updateInfo.note0, note1: updateInfo.note1},{multi:true}, function(err, numberAffected){});

这三个都没有奏效!!! 请帮忙..

1 个答案:

答案 0 :(得分:1)

根据docs

  

仅在传递回调时执行操作。强迫   没有回调的执行(这将是一个不安全的写),我们必须   首先调用update(),然后使用exec()方法执行它。

在第一种情况下,您缺少回调函数。

Card.where({ _id: "54a108be506225c82a56848b" }).update({
   $set: {imageUrl:"blablab"}
 },function(e,n){
    console.log(n);
});

,或者

Card.update({_id: "54a108be506225c82a56848b"}, 
            {"imageUrl":"Hello"},
            {multi:true}, 
            function(err, numberAffected){});