GraphQL + Mongoose - при возврате FindOneAndUpdate мое значение inc в несколько раз больше, чем должно быть

Я использую graphQL и mongoose для запроса моей базы данных.

Я намерен увеличить значение на 1 для установленной записи.

Mutation: {
    cardcompared (root, {name}, context, info) {
      console.info('mutation');
      return Card.findOneAndUpdate({name: name}, {$inc : {comparisons: 1}}, {new: true}, function(err, card) {
        console.info(card.comparisons);
      })
}

По какой-то причине, когда я возвращаю значение, похоже, что при использовании {$inc : {comparisons: 1}} мое значение приращения будет случайным образом равным 1, 2 или 3.

но следующий код работает так, как ожидалось

Mutation: {
    cardcompared (root, {name}, context, info) {
      console.info('mutation');
      Card.findOneAndUpdate({name: name}, {$inc : {comparisons: 1}}, {new: true}, function(err, card) {
        console.info(card.comparisons);
      })
}

Над кодом $ каждый раз увеличивайте значение на 1.

Я не понимаю, почему это происходит.

из-за свойства закрытия В первом примере возвращаемая функция выполняется более одного раза, поэтому значение увеличивается очень высоко, чем 1.

Ratan Uday Kumar 01.08.2018 08:49

на шаге 2 вы не возвращаете функцию, поэтому она выполняется только один раз

Ratan Uday Kumar 01.08.2018 08:50
developer.mozilla.org/en-US/docs/Web/JavaScript/Closures
Ratan Uday Kumar 01.08.2018 08:56
Использование JavaScript и MongoDB
Использование JavaScript и MongoDB
Сегодня я собираюсь вкратце рассказать о прототипах в JavaScript, а также представить и объяснить вам работу с базой данных MongoDB.
0
3
222
0

Другие вопросы по теме