【问题标题】:Push/Pull values on nested array mongoose嵌套数组猫鼬上的推/拉值
【发布时间】:2019-11-15 14:02:21
【问题描述】:

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

所以我们的想法是能够拥有一个数据库模式数组 对象,其中包含两个字段,schemaNameschemaFields。我希望能够根据需要更新(添加/删除)特定 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');
    });

【问题讨论】:

    标签: arrays mongoose nested


    【解决方案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');
    });
    

    【讨论】:

      猜你喜欢
      • 2016-06-05
      • 2021-10-17
      • 2021-04-14
      • 2018-10-30
      • 2018-05-10
      • 1970-01-01
      • 2022-07-20
      • 2021-04-02
      • 2022-01-26
      相关资源
      最近更新 更多