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

标签 javascript mongodb mongoose async-await

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

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/

相关文章:

javascript - 我如何在 ReactJS 中使用窗口对象?

javascript - React.js 移动网站在 Android 上的 Chrome 中卡住

mongodb无法启动

node.js - 如何让 Mongoose 在 MongoDB 中找到非 Mongoose 创建的数据?

javascript - 确定 ReactJS 中何时至少选中一个复选框

javascript - 从 blob :http using javascript with no redirection 保存文件

mongodb - 定期回收磁盘空间,无需停机

java - 在微服务架构中管理与 MongoDb 的关系

node.js - Mongoose:从现有数据生成模式

mongodb - 什么是 Mongoose 错误 Cast to ObjectId failed for value XXX at path "_id"?