ajax - 在 mongoose db 中更新嵌套数组
问题描述
我在通过 ajax 调用从 nodejs 应用程序更新 mongodb 文档时遇到问题。我要更新的文档部分是嵌套数组(tracks
)。就在下面,我向您展示了
- 我使用的架构
- 为请求更新文档而进行的 ajax 调用
- 以及处理我提出的更新请求的服务器端
- 以及数据库演示。
注意:我已删除与解决此问题无关的内容
// 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
}
解决方案
推荐阅读
- node.js - Emailjs 有时只能与 Microsoft Edge 配合使用
- html - 如何制作垂直椭圆形的形状div?
- c# - 如何使用 OpenCV 解码两个 UWP 应用程序之间发送的图像字节?
- python - 由数据框形成的逗号分隔列表在传递到 SQL 时中断
- javascript - 给作者直接留言
- wpf - 从 WPF 应用程序运行命令行命令
- javascript - 渐进式 Web 应用 (PWA) 的设备要求
- python-3.x - 如何在 Python 中挂断/结束 Twilio 通话
- apache-flink - 我们可以更新一个状态的 TTL 值吗?
- vba - ADO 连接(在 VBA 中)无法插入到 Sharepoint 列表