我想在下面的Mongoose模型中只更新todo里面的兩個值
const userSchema = new mongoose.Schema({
name: String,
email: String,
phone: Number,
points: Number,
todo: {
}
})
該todo實際上包含11個值,而我每次只想更新2個值,這是我從前端獲得的
。let {
t,
i
} = req.body.delitem。
await User.updateOne( {
用戶名: req.body.user。
}, {
$set: {
todo: {
[t]: ""/span>,
[i]: "", [i].
}
}
})
但現在的情況是,這兩個欄位被設定為空白字串,但其余欄位也變成了NULL,而我希望其他欄位保持不變。
uj5u.com熱心網友回復:
像這樣使用點符號:
await User. updateOne({username:req.body.user},
{
"$set": {
"todo.t": "",
"todo.i": ""
示例 此處
如果你在$set中使用一個物件,你就是在告訴mongo用新的物件替換該物件。
uj5u.com熱心網友回復:
我相信你的問題是你使用$set并傳遞了一個完整的物件,這覆寫了整個todo與你的t和i欄位,并且你已經在其他欄位上強制要求了。
如果你看到mongo中$set的檔案,你可以在子物件中更新特定欄位。下面的片段應該是比較合適的。
標籤:let {t,i} = req.body.delitem。
await User. updateOne({username:req.body.user}, {
$set: {
"todo.t"。"",
"todo.i": ""
