[英]Pushing a new object to a nested array in Mongoose in async functions
假设我有一个如下所示的架构:
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',
});
}
};
猫鼬findOneAndUpdate()
: https://mongoosejs.com/docs/api.html#model_Model.findOneAndUpdate mongo $push
:https://docs.mongodb.com/manual/reference/operator/update/push/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.