node.js - 如何在嵌套对象中发送新添加的项目作为响应
问题描述
我的 mongodb 中有一个名为 User 的集合,例如您可以在下面的已保存用户示例中看到
{
_id: new ObjectId("61488f3892099143ca2b2bbc"),
name: 'test',
orders: [],
products: [
{
name: 'as',
image: '049fcd8d-f954-4aef-bd77-757af881f7c5.jpeg',
_id: new ObjectId("61531666ad63a47ed692c90b")
},
]
}
我有负责向选定用户添加新产品的 node.js 功能
async function addProduct(req, res, next) {
await User.findOneAndUpdate(
{ _id: req.params.userId },
{
$addToSet: {
products: {
...req.body,
image: req.file.filename,
},
},
}
);
return res.status(200).send();
}
但我只想发送新添加的产品作为回复,请帮我解决这个问题。
解决方案
我建议您使用 $push 运算符(doc):
{ $push: { <field1>: <value1>, ... } }
将它与您的示例一起使用:
(async () => {
await User.findByIdAndUpdate(
'6153769ce997d65baf860cc7',
{
$push: {
products: {
name: 'as2',
image: '589fcd8d-f954-4aef-bd77-757af881f7c5.jpeg'
}
}
}
);
})();