繁体   English   中英

Mongoose findOneAndUpdate 不适用于 Stripe 的其他所有工作,没有副作用

[英]Mongoose findOneAndUpdate doesn't work with Stripe on everything else it works without side effects

我在向用户添加余额时遇到问题,我进行了条带测试结帐,并在处理数据并检查它是否正确之后。 在想为用户添加余额而不是添加例如 1+2=3 之后,我得到 1+2=12 就像附加数字一样。

这是用于添加余额的函数,它在其他函数中使用,但是当我添加 stripe 时,它​​才开始附加数字。

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

我检查了金额,金额仍然与来自前端的金额相同,它从未改变或接触过原始状态。

balanceamount或两者都是字符串类型,因此它被连接而不是加法,请执行parseInt(user.balance) + parseInt(amount)以确保它不是字符串

此外,您可以通过使用如下所示的$inc运算符设置值来使用单个查询来实现您想要的,只需确保您的User模型中的 balance 类型为Number

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

这将增加balance内的 balance 与amount

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM