gpt4 book ai didi

javascript - 在异步函数中将新对象推送到 Mongoose 中的嵌套数组

转载 作者:行者123 更新时间:2023-12-02 21:35:46 25 4
gpt4 key购买 nike

假设我有一个如下所示的架构:

const Schema1 = new Schema({
field1: String,
field2: String,
array1: [{
objfield1: String
objfield2: Date,
objfield3: {
type: Schema.Types.ObjectId,
ref: 'OtherModel',
required: true,
},
}],
}, options);

这里array1是一个对象数组。我希望能够使用 PUT 请求命中端点并将新对象推送到 array1 数组中。我尝试使用 lodash 中的 _.merge,尝试使用 push 将新对象添加到数组中,但无济于事。

exports.addObject = async (req, res, next) => {
try {

let schemaInstance = await db.Schema1.findById(req.params.id);
schemaInstance['array1'].push(req.body)
schemaInstance.markModified('array1');
let updatedSchemaInstance = await schemaInstance.save();

return res.status('200').json(updatedSchemaInstance);

} catch (err) {
console.log(err);
return next({
status: 400,
message: 'No users in the database',
});
}
};

最佳答案

如果您想使用新元素更新数组,请使用 findOneAndUpdate() 函数和 $push

喜欢:

exports.addObject = async (req, res, next) => {
try {

let schemaInstance = await db.Schema1.findOneAndUpdate(
{_id: req.params.id},
{$push: {'array1': req.body});
schemaInstance.markModified('array1');
let updatedSchemaInstance = await schemaInstance.save();

return res.status('200').json(updatedSchemaInstance);

} catch (err) {
console.log(err);
return next({
status: 400,
message: 'No users in the database',
});
}
};

Mongoose findOneAndUpdate():https://mongoosejs.com/docs/api.html#model_Model.findOneAndUpdate蒙戈$push:https://docs.mongodb.com/manual/reference/operator/update/push/

关于javascript - 在异步函数中将新对象推送到 Mongoose 中的嵌套数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60496331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com