我在通过 ajax 调用从 nodejs 应用程序更新 mongodb 文档时遇到问题。
我要更新的文档部分是一个嵌套数组( tracks
) 。就在下面我给你看了
注意:我删除了与解决此问题无关的内容
// 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
}