Я использую 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.
Я не понимаю, почему это происходит.
на шаге 2 вы не возвращаете функцию, поэтому она выполняется только один раз

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