在猫鼬数据库中更新嵌套数组

时间:2021-04-12 00:48:37

标签: ajax mongodb updates

我在通过 ajax 调用从 nodejs 应用程序更新 mongodb 文档时遇到问题。 我要更新的文档部分是一个嵌套数组( tracks) 。就在下面我给你看了

  1. 我使用的架构
  2. 为请求更新文档而进行的 ajax 调用
  3. 以及处理我提出的更新请求的服务器端
  4. 以及数据库演示。

注意:我删除了与解决此问题无关的内容

// schema

const artistModel = new Schema({

artistName : {type:String},
album : [ {
    albumName : {type:String},

    // part I want to update 
    tracks : [{
       trackLabel : {type:String} ,
       trackPrice : {type:Number},
    }]
 }] 
})


 // ajax call 

document.getElementById("valid-addtrack").addEventListener("click", event=>{
   $.ajax({
    type:"post",
    url:"/add_track",
    data:{
        _id : document.getElementById("_artistID").value ,
        _albumID : document.getElementById("_albumID").value,
        trackLabel: document.getElementById("trackLabel").value,
        trackPrice: document.getElementById("trackprice").value,
        
    } ,
    dataType:'',
    success:function(d){ 
        
    }
   })
})

// server side dealing update request 
app.post("/add_track",(req,res)=>{
 console.log(req.body);
 artistModel.updateOne(
    {  _id:req.body._id},
    {$push : {"album.$[e].tracks":{
        trackLabel  : req.body.trackLabel,
        trackPrice  : req.body.trackPrice,
         } 
        } 
    },
    {arrayFilters:[{"e._id":req.body._albumID }]}
  )
    res.end('sent')
});
NB : When I try the update directly in mongose command line it works 



 // how the database look like 

{
    "_id" : ObjectId("60737e04653b710f28b9e366"),
    "album" : [
            {
                
                 "_id" : ObjectId("60737e29653b710f28b9e367"),
                  "albumName" : "PARADIS SU TERRE",
                  "tracks" : [ ]  // Here I want to add data 
            }
    ],
    "artistName" : "MULA",
    "artistType" : "single",
    "__v" : 0
}

0 个答案:

没有答案