2014-12-29 20 views
1

首先,我創建了貓鼬模式:mongoldb update()方法是行不通的

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

按照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){}); 
+0

嗯..有道理,但沒有奏效。它打印出n,它是0,但imageUrl沒有插入卡片數據庫 – Martian2049

+0

您是否指定了正確的'_id'? – BatScream

+0

我做到了。我相信是這樣。你試過了嗎? – Martian2049