Обновить документ, возвращенный findOne () / find () / findById () - mongoose - PullRequest
0 голосов
/ 28 января 2020

Мне интересно, если есть какой-либо метод, позволяющий изменить значения доступных полей объекта документа, возвращаемого методами mon goose find(), findOne() и findById(), и обновить их с изменениями, примененными в база данных. Ниже приведен фрагмент кода, который я ожидаю, чтобы выполнить работу, которую я хочу:

User.findOne({ email: email })
      .then(user => {
        if (user) {
            user.fieldToUpdate = "Updated value"; // Here I'm getting the field and updating it with the new value;
            user.save().then().catch(); // Here I'm updating the document to the database, expecting for a promise object
        } else {
          const error = new Error("No such user in the database.");
          error.httpStatusCode = 422;
          next(error);
        }
      })
      .catch(error => {
        next(error);
      });

1 Ответ

1 голос
/ 28 января 2020

Фрагмент кода, который вы написали, будет работать нормально, но если вам нужно просто обновить найденный документ:

User.findOneAndUpdate({ email }, { email: 'sample@test.com' })
  .then((err, user) => {
    //
  }

Подробнее о Документах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...