2014-12-29 3 views
1

Сначала я создал мангуста схему:обновление mongoldb() не будет работать

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,

операция выполняется только при прохождении обратного вызова. Чтобы принудительно выполнить выполнение без обратного вызова (что было бы опасной записью), мы должны выполнить первое обновление вызова(), а затем выполнить его с помощью метода 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

Смежные вопросы