提问人:Vaodi 提问时间:1/17/2023 更新时间:1/30/2023 访问量:61
更新嵌套数组中的嵌套数组
Update a nested array in a nested array
问:
我正在尝试使用此路线进行更新。
router.put("/:id", async(req,res)=>{
try {
const updateUser = await User.findByIdAndUpdate(req.params.id, {
$push: {
clients:{
client_name: req.body.client_name,
client_Username: req.body.client_Username,
client_Password: req.body.client_Password,
documents : [
{
name : req.body.docName,
descritption : req.body.docDescription,
doc_upload : req.body.doc_upload,
}
]
}
}
},{new:true})
res.status(200).json(updateUser);
}
catch(err) {
res.status(500).json(err);
}
});
一旦函数找到 id,它就会毫无问题地更新 client_name、client_Username 和 client_password。
我的问题是当我尝试使用名称/描述和doc_upload更新嵌套数组文档时。我做不到。
怎么了?请问怎么做?
答:
0赞
lpizzinidev
1/17/2023
#1
一种解决方案可能是将更新分开:
router.put('/:id', async (req, res) => {
try {
const { id } = req.params;
const { client_name, client_Username, client_Password } = req.body;
const updateUser = await User.findByIdAndUpdate(
id,
{
$push: {
clients: {
client_name,
client_Username,
client_Password,
},
},
},
{ new: true }
);
await User.findOneAndUpdate(
{
id,
'clients.client_name': client_name,
'clients.client_Username': client_Username,
},
{
$push: {
'clients.$.documents': {
name: req.body.docName,
descritption: req.body.docDescription,
doc_upload: req.body.doc_upload,
},
},
}
);
res.status(200).json(updateUser);
} catch (err) {
res.status(500).json(err);
}
});
评论
documents
name
description
doc_upload
req.body