簡體   English   中英

從數組中刪除一個元素,即在 Object 內

[英]Deleting an element from an Array, that is inside an Object

在我的待辦事項應用程序中,當登錄用戶完成一項任務時,我想將其從 MongoDB 數據庫中清除。

這是我的架構的代碼。

const user = new mongoose.Schema({
    username : String,
    password : String,
    task : [{
        text : String,
        day : String,
        reminder : Boolean,
    ]}
 })
    

例如,如果 Daryl 完成了text: "Gym" & day: "Feb 4th 5.30pm" ,我只想從 Daryl 的任務數組中刪除任務 [0]。

這是我嘗試使用 ZCCADCDEDB567ABAE643E15DCF0974E503Z 這樣做,

app.delete("/tasks", (req,res) => {
    User.findOne( {_id : req.user.id}).then((target) => {
        target.task.remove({text : req.body.text, day : req.body.day})
        })
}) 
  1. User.findOne({_id: req.user.id}) 只針對登錄的人
  2. 定位后,使用.task 訪問任務數組
  3. 和 use.remove 連同過濾器,從數組中刪除該條目

我有 console.logged() 所有變量,它與數據字段相符,但是條目沒有被刪除。 我究竟做錯了什么?

我設法解決了我的問題,希望這對其他人有幫助

app.delete("/tasks", (req, res) => {
    User.findByIdAndUpdate(req.user.id, {$pull: {"task": {text: req.body.text}}}, {safe: true, upsert: true},
        function (err, node) {
        // console.log here for debugging, if you want
        })
})

這成功地刪除了基於

  1. 請求.user.id
  2. "task": {//無論你的條件更嚴格}

我仍然不明白為什么我之前的嘗試失敗了,但至少這個有效。

暫無
暫無

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

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