如果我想更新已經創建的集合,我只想保存非空欄位。
示例-假設我在這里創建一個集合用戶-
name: "Siam Ahnaf"
password: "12345678"
role: "user"
這是創建的集合。然后我想更新它。為了更新,我從這樣的前端應用程式中獲取了這個物件-
{name: "",
password: "98765432"
role: "Admin"}
在這里,我可以看到我從前端應用程式獲得的名稱為空。當我更新它時
User.findByIdAndUpdate(req.user._id, {...input})
它使用此空名稱更新集合。更新后我的收藏是這樣的——
name: ""
password: "98765432"
role: "Admin"
但我想當 name 為空時,它不會保存這個空值。它保持以前的價值。我怎樣才能做到這一點?
uj5u.com熱心網友回復:
您可以在保存之前從物件中洗掉空字串屬性。
const obj = {
name: "",
password: "98765432",
role: "Admin"
}
Object.keys(obj).forEach((k) => obj[k] == '' && delete obj[k]);
User.findByIdAndUpdate(req.user._id, obj)
洗掉空字串屬性函式取自https://stackoverflow.com/a/38340730/9095807
或者.pre('save')像這樣使用貓鼬的方法:https : //stackoverflow.com/a/59916058/9095807
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/336682.html
上一篇:擠壓和合并VS擠壓和變基
下一篇:渲染用戶IDExpressJS
