嵌套数组猫鼬上的推/拉值

时间:2019-07-04 21:54:22

标签: arrays mongoose nested

我正在尝试使用express更新猫鼬模式中嵌套数组中的值。我有所需的代码,我想我需要更新它,但是数组没有更新。

因此,我们的想法是能够拥有一个带有两个字段 schemaName schemaFields 的数据库架构对象的数组。我希望能够根据需要更新(添加/删除)特定 schema对象 schemaFields 字段中的值。

我已经在互联网上的这里和其他地方尝试了很多东西,但似乎没有任何效果。我尝试使用findOneAndUpdate,findByIdAndUpdate等。

我的猫鼬模式如下,

let databaseSchema = new Schema({
  schemaName: { type: String },
  schemaFields: [String]
});

let databaseSchemas = new Schema(
  {
    dbSchemas: [databaseSchema]
  },
  {
    collection: 'databaseSchemas'
  }
);

我的更新功能如下,

schemasModel.mongo
    .update(
      {
        _id: req.body.documentId,
        'dbSchemas._id': req.body.schemaId 
      },
      console.log('preparin to push the field \n'),
      {
        $push: {
          'dbSchemas.$.schemaFields': req.body.newField
        }
      }
    )
    .then(() => {
      res.send('new field added successfully');
    });

1 个答案:

答案 0 :(得分:1)

因此,我通过删除console.log()作为model.update()函数的第二个参数来解决了这个问题。显然,这必须是操作的对象。

Model.update函数的工作代码如下,

schemasModel.mongo
.update(
  {
    _id: req.body.documentId,
    'dbSchemas.schemaName': req.body.schemaToSearch
  },
  {
    $push: {
      'dbSchemas.$.schemaFields': req.body.newField
    }
  }
)
.then(() => {
  res.send('new field added successfully');
});