Push / Pull значения на мангусте вложенного массива - PullRequest
1 голос
/ 05 июля 2019

Я пытаюсь обновить значение во вложенном массиве в схеме Мангуста с помощью Express.У меня есть код, необходимый для того, что я решил, что мне нужно обновить его, но массив не обновляется.

Таким образом, идея состоит в том, чтобы иметь возможность иметь массив схемы базы данных объектов с двумя полями, имя_схемы и schemaFields .Я хочу иметь возможность обновлять (добавлять / удалять) значения из 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 Ответ

1 голос
/ 05 июля 2019

Итак, я решил это, удалив 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');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...