Функция обновления Mongodb работает только тогда, когда включен .then () - PullRequest
0 голосов
/ 25 января 2019

Я хочу увеличивать поле в mongodb каждый раз, когда делается запрос.Моя функция обновления работает только тогда, когда .then () включена после вызова функции, и я не понимаю, почему.

Код работает, но мне интересно понять, почему мне нужно включить .then ().Функция адаптера вызывается в любом случае, но обновление отображается в дБ, только если после вызова функции включено .then ().

Функция обновления:

updateRequestCount: (id) => {
    return Entry.updateOne({id: id }, { '$inc': { requestCount: 1 } });
}

работает:

updateRequestCount(request.query.id)
.then();

не работает:

updateRequestCount(request.query.id);

1 Ответ

0 голосов
/ 25 января 2019

Когда вы вызываете Model.updateOne() или любой другой метод CRUD для модели в Mongoose, он возвращает объект Query, который имеет метод then(), который выполнит запрос и вернет Promise.

Таким образом, запрос выполняется не сразу при вызове updateOne(), а только при вызове then() для возвращенного объекта Query.

В качестве альтернативы вы можете передать функцию обратного вызова на updateOne(), в этом случае запрос выполняется немедленно и вам не нужно вызывать then():

updateRequestCount: (id) => {
  return Entry.updateOne({id: id }, { '$inc': { requestCount: 1 } }, err => {
    // ...
  });
}
...