簡體   English   中英

僅將表單提供的字段編輯(更新)到 mongoose 子文檔中

[英]only edit (update) fields provided by form into mongoose subdocument

我想用我在表單中填寫的任何字段更新我的 mongoose 子文檔,它工作正常,但我面臨的問題是,如果任何字段為空,然后我提交我希望它只用提供的字段更新 subdocumnet未提供的表單和字段應保留以前的內容。 目前它正在刪除更新后子文檔中表單未提供的字段

這是我目前正在使用的更新 fn

List.updateOne(
        {"questionSet._id": questId},
        {
            $set: {
                "questionSet.$": req.body
            }
        },
        {new: true, useFindAndModify: false},
        (e)=>{
            if(e){
                console.log(e);
                res.redirect("/admin-edit-quest")
            } else {
                res.redirect("/admin-edit-quest")
            }
        }
    )

這是例如。 我的貓鼬模型

list: { "_id" : ObjectId("60f2cc07275bbb30d8cb268e"), 
"listName" : "dsa", 
"aboutList" : "dsa queestions",
 questionSet" : [ { "solved" : false, 
                   "_id" : ObjectId("60f2cc12275bbb30d8cb2695"), 
                    "topic" : "array", 
                     "name" : "array is best", 
                    "url" : "www.arr.com", 
                       "listname" : "dsa", 
                     "__v" : 0 }, 
               { "solved" : false,  
                 "_id" : ObjectId("60f2cc1b275bbb30d8cb269d"), 
                "topic" : "linked list",
               "name" : "reverse list", 
                 "url" : "www.list.com",
                "listname" : "dsa",
                 "__v" : 0 } 
               ], 
"__v" : 2 
}

需要從req.body刪除具有空白值的鍵:

pruned_body = {}
body = JSON.parse(reg.body)

Object.keys(body).forEach(function (key) { 
  if (body[key]) {
    pruned_body[key] = body[key]
 }})

然后在$set使用pruned_body

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM