1
我試圖更新集合中的文檔。我特別想更新以下Strings.The數組是我的架構問題在使用save()保存數據在貓鼬模型中的值
var sampleSchema= mongoose.Schema({
fullName : String,
email : String,
rolesTaken : [String],
});
我基本上有這樣的架構的陣列。我想更新所有角色的rolesTaken數組。 所以我做了以下
var async = require('async');
var ATmapping = require('path to Schema');
ATmapping.find({},function(err,lists){
if(err){
console.log(err);
return;
}
if(lists.length > 0){
async.each(lists,function(list,callback){
if(!list.rolesTaken){
list.rolesTaken =[];
}
list.rolesTaken.push("Patient");
list.markModified('rolesTaken');
list.save(function(err,item){
if (err){
console.log(err);
}
console.log('Saved', item);
callback();
});
});
}
});
我已經瀏覽了很多,最流行的解決方案是增加markModified。但它似乎並不在我的case.When工作,我加入mongoose.debug我得到了以下
atmappings.update({ _id: ObjectId("59074b127adeef0004b84ac3"), __v: 7 }, { '$set': { rolesTaken: [] }, '$inc': { __v: 1 } })
正如你所看到的,儘管我加入markmodified採取的角色是空的,保存()。我想知道是否我錯過了一些阻止我將模式中的值保存起來的事情。
在此先感謝。
感謝您的回答。但不知何故,它似乎並沒有工作 – RBN
@RBN你有什麼嘗試?你是如何實現它的? – Jordan
當你告訴我更換我取代我的代碼下面的'ATmapping.findByIdAndUpdate(list._id,{$推:{rolesTaken:角色}},功能(ERR,項目){ \t \t \t \t \t \t的console.log (「推」,項目); \t \t \t \t \t});',其中通過使用async.each – RBN