2014-08-27 223 views
0

我一直工作在一個簡單的更新功能,看起來如下:貓鼬不保存文檔

exports.update = function update(req, res, next){ 

    User.findById(req.param('userId')) 
    .exec(function (err, user) { 
     if(err) return next(err); 


     if(!user) 
     return res.sendData(null, 404, lang.userNotFound); 

     var info = req.param('info'); 

     // Get the update to be made, in JSON format 
     if(info !== Object(info)) info = JSON.parse(info); 

     user.info = setProperties(user.info, info); 

     // console.log(user) gives the updated user object 

     user.save(function(err, usr) { 
     if (err) return next(err); 

     // console.log(usr) shows the updated user object 

     res.sendData(); 
     }); 
    }); 
}; 

function setProperties(object, update) { 

    if(update!== Object(update)) 
    object = update; 

    else { 
    for (var prop in update) { 
     if (object.hasOwnProperty(prop)) 
     object[prop] = setProperties(object[prop], update[prop]); 
     else 
     object[prop] = update[prop]; 
    } 
    } 
    return object; 
} 

但不幸的是,雖然一切似乎工作,在我的數據庫沒有什麼變化。我沒有得到任何錯誤。任何人都可以揭示這個謎團嗎?謝謝!

以供參考(如果適用),這裏是我的架構:

var UserSchema = new Schema({ 
    createdAt: {type: Date, default: Date.now}, 
    lastActivity: {type: Date, default: Date.now}, 
    info : {type : Schema.Types.Mixed}, 
}); 
+0

請發佈更新代碼 – Vinz243 2014-08-27 11:18:34

回答

0

啊,我發現這個問題。 Mongo的確在執行保存,但它不知道一個屬性已經改變。

最後,固定它是如添加

user.markModified('info'); 

簡單然後一切按預期執行。這是一個恥辱,貓鼬不認識我們。感謝@ vinz243爲我指出了正確的方向!