2015-01-01 161 views
0

我在處理貓鼬時遇到了一些問題。貓鼬不會更新文檔

我寫了下面的代碼片段:

if (!usr.settings) usr.settings = {}; 
async.forEach(Object.keys(params), function (item, nextitem){ 
    usr.settings[item] = params[item]; 
    nextitem(); 
}, function (err) { 
    if (err) return callback(err); 
    usr.save(function(err) { 
     if (err) return callback(err); 
     return callback(); 
    }); 
}); 

當我第一次使用它,它工作得很好,它創建的文檔中的所有項目完美,但是當我使用它的第二次(讓說我想更新這些項目)它不會改變它們的值,也不會給我任何錯誤。 數據保持不變。

我試圖調試它。

if (!usr.settings) usr.settings = {}; 
async.forEach(Object.keys(params), function (item, nextitem){ 
    usr.settings[item] = params[item]; 
    nextitem(); 
}, function (err) { 
    if (err) return callback(err); 
    usr.save(function(err) { 
     console.log(usr); <------------------- [At this point it shows the updated data but for some reason it doesnt save it to the db] 
     if (err) return callback(err); 
     return callback(); 
    }); 
}); 

任何想法爲什麼會發生? 謝謝。

回答

0

搞亂了之後,找到了解決辦法。

可以說你是使用下面的架構:

user_schema = { 
    settings = Object 
} 

您將無法設定的設置,因此下面的代碼:

usr.settings.something = 123; 
usr.save(function(err) { 
    if (err) return callback(err); 
    return callback(); 
}); 

會做什麼,但仍不能導致錯誤。 如果要解決這個問題,此修復程序應用到架構:

user_schema = { 
    settings = { 
     something : Number 
     something_else: Object 
    } 
} 

現在你就可以設置something與價值:)

我希望它有幫助的人