2
考慮以下方案貓鼬,更新子文檔
Var Schema = new Schema({
username: {Type: String},
...
...
contacts: {
email: {Type: String},
skype: {Type: String}
}
})
由於每個用戶都可以說出只有一個電子郵件和Skype我不希望使用陣列接觸。
丟棄的數據庫查詢和錯誤處理我嘗試做一些像
// var user is the user document found by id
var newValue = '[email protected]';
user['username'] = newValue;
user['contacts.$.email'] = newValue;
console.log(user['username']); // logs [email protected]
console.log(user['contacts.$.email']); // logs [email protected]
user.save(...);
不會發生錯誤和用戶名被成功更新,而接觸子文檔仍然是空的。 我在那裏想念什麼?
謝謝,user.set(key,newValue)適合我。但是,請注意,直接修改user.contacts.email = newValue不起作用。 –
然後,您的架構定義出現問題。看到我更新的答案。 – JohnnyHK
是的,我的模式與你的定義完全一樣,使用小寫't'定義類型。當然,在原始問題上有錯別字。無論如何,user.set()運行良好,在我的情況下更好,因爲它需要更少的代碼。 –