我有一個蒙戈架構如下訪問,並與鍵更新蒙戈對象
var schema = mongoose.Schema({
user: {type:ObjectId, ref: 'User'},
preferences: mongoose.Schema.Types.Mixed
});
module.exports = mongoose.model('UserPreference', schema);
我正在做後期的呼叫與數據
{
"newQuestionPrompt": false,
"oldQuestion": false
}
這兩個屬性都需要進行設定成偏好字段,例如
"_id" : ObjectId("58f9d06cf998d9baccf8024f"),
"user" : ObjectId("58eda68601dc391e27f3e2c4"),
"preferences":{
"newQuestionPrompt": false,
"oldQuestion": false
}
但是,當再次爲同一個用戶再次進行相同的調用時,可能會有en在通話,或使用不同的值相同屬性tirely不同的屬性,如
{
"newQuestionPrompt": true,
"randomQuestion": false
}
在這種情況下,我需要更新已經存在的屬性值,並添加這不是的,所以早期的對象應該變成
"_id" : ObjectId("58f9d06cf998d9baccf8024f"),
"user" : ObjectId("58eda68601dc391e27f3e2c4"),
"preferences":{
"newQuestionPrompt": true,
"oldQuestion": false,
"randomQuestion": false
}
我不能使用$ set preferences:req.body,因爲它會覆蓋整個事情。什麼是實現這一目標的最佳方式?
集Object.assign(oldobjfromdatabase,newobjfromuser) –
嘗試:' 「_id」:物件( 「58f9d06cf998d9baccf8024f」), 「用戶」:物件( 「58eda68601dc391e27f3e2c4」), 「$集」:{ 「preferences.newQuestionPrompt」:假 }' – Titus
如果你使用'preferences.newQuestionPrompt'只有'newQuestionPrompt'屬性將不刪除其他設置屬性。換句話說'preferences.newQuestionPrompt'只會更新'newQuestionPrompt'而不是整個'preferences'對象。 – Titus