提问人:Ope Afolabi 提问时间:12/27/2021 更新时间:12/27/2021 访问量:256
如何在 mongoose 中更新嵌套数组值?
How do I update nested array values in mongoose?
问:
我对 nodejs/express 相当陌生,我正在用 devchallenges.io 练习全栈开发,我正在做 shoppingify 挑战。我正在尝试更新我在 items 数组中定位的项目的数量。我知道我下面的尝试很糟糕,我真的很难理解能够这样做的逻辑。
// @route PUT api/list/item/quantity/:id
// @desc Increase or decrease quantity
// @access Private
router.put('/item/quantity/:id', auth, async (req, res) => {
const { action } = req.body;
try {
let list = await List.findOne({ user: req.user.id });
const item = list.items.find(
(item) => item._id.toString() === req.params.id
);
list = list.updateOne(
{ 'items._id': req.params.id },
{ $set: { 'items.quantity': item.quantity + 1 } }
);
await list.save();
return res.json(list);
} catch (error) {
console.error(error.message);
res.status(500).send('Server Error');
}
});
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const ListSchema = new Schema({
user: {
type: Schema.Types.ObjectId,
},
name: {
type: String,
default: 'Shopping List',
},
items: [
{
name: {
type: String,
default: '',
},
note: {
type: String,
default: '',
},
image: {
type: String,
default: '',
},
category: {
type: String,
default: '',
},
quantity: {
type: Number,
default: 1,
},
},
],
date: {
type: Date,
default: Date.now,
},
});
module.exports = List = mongoose.model('list', ListSchema);
答:
1赞
Smit Gajera
12/27/2021
#1
看,这是我的更新供应商路线,我正在更新嵌套的街道和城市名称。
router.put("/update-vendors", async (req, res, next) => {
const vendor = await Vendor.updateOne(
{
"address.street": "Street2",
},
{
$set: {
"address.$.street": req.body.street,
"address.$.city": req.body.city,
},
}
);
res.status(200).json(vendor);
});
您可以借助 和其他方法更新特定内容$set
$push
评论
0赞
Ope Afolabi
12/27/2021
你是救命恩人,谢谢:)
1赞
Smit Gajera
12/27/2021
太好了,我很高兴看到这项工作,因为您需要更多帮助,请告诉我
评论