1
私はfindOneを実行してから、保存します。これは、以前に保存されたオブジェクトを上書きすることです。マングースセーブで正しい保存オブジェクトが返されますが、DBには保存されません
問題は、コールバックでres.json()を保存した後、正しく更新されたデータ(myというループを介して変更されたmyObject)が返されることです。しかし、DBはまだ古い状態でmyObjectを表示しているので、 "保存"は実際には起こっていないようです。
var pathList = [{id:'x',url:'#'}];
MyObjects.findOne({'_id': _id}, function(err, myObject) {
//
for (var i in myObject.body.module) {
for (var j = 0; j < pathList.length; j++) {
var id = pathList[j].id;
myObject.body.module[i].channel[id].buffer = {
url:pathList[j].url
};
}
}
//
myObject.save(function(err, data) {
if (err){
res.json({'response':'Error in saving track: '+err});
throw err;
}
res.json({
'response': 'done',
'data': data
});
});
});
このfindOne> saveメソッドは以前私のために働いていました。だから私は上記のコードは動作しませんか?並行性?オブジェクトのサイズ?
助けがあれば助かります。おかげ
「保存」を検索する前に定義してみませんか?たぶんあなたは保存コールバックを定義する直前に見つける? save関数がコールバックではなく、findone関数がコールバックである場合、保存後にコールバックを返す可能性がありますか? –