Mon goose findOneAndUpdate не работает с Stripe во всем остальном, работает без побочных эффектов - PullRequest
0 голосов
/ 07 января 2020

У меня проблема с добавлением баланса для пользователя, у меня есть проверка полосового тестирования и после обработки данных и проверки, если это правильно. После того, как я хочу добавить баланс пользователю вместо добавления, например, 1 + 2 = 3, происходит то, что я получаю 1 + 2 = 12, как добавляемые числа.

Эта функция используется для добавления баланса, она используется в других функциях , но когда я добавил полосу, он просто начал добавлять цифры.

Users.findOne({ email: email }).then(user => {
  Users.findOneAndUpdate(
    { email: email },
    { balance: user.balance + amount }
  ).then(result => {
    return res.status(200).json({ message: "Success" });
  });
});

Я проверил сумму, сумма остается такой же, как и из внешнего интерфейса, который никогда не менялся и не затрагивался из исходного состояния.

1 Ответ

0 голосов
/ 07 января 2020

Либо из balance или amount, либо оба имеют тип string, поэтому его объединяют вместо сложения, выполните parseInt(user.balance) + parseInt(amount), чтобы убедиться, что это не строка

Кроме того, вы можете добиться того, что Вы хотите использовать один запрос, устанавливая значения с помощью оператора $inc, как показано ниже, просто убедитесь, что баланс в вашей модели User имеет тип Number

Users.findOneAndUpdate(
    { email: email }, 
    { $inc: {
         balance: amount
        }
    })
    .then(
        result => {
           return res.status(200).json({ message: 'Success' }
    );

Это увеличит balance независимо от значений там внутри баланса с amount

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