首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Model.updateOne和$inc更新我的单鹅模型中文档中的字段

如何使用Model.updateOne和$inc更新我的单鹅模型中文档中的字段
EN

Stack Overflow用户
提问于 2022-05-10 13:57:51
回答 1查看 26关注 0票数 0

我正在制作一个数字货币应用程序(一个封闭的社区),在进行交易之后,我想更新mongodb中接收者的余额。

代码语言:javascript
复制
const create = (req, res) => {
    let transaction = new Transaction();
    transaction.sender = req.body.sender;
    transaction.receiver = req.body.receiver;
    transaction.amount = req.body.amount;
    transaction.save((err, doc) => {
        if(!err) {
            console.log(transaction.receiver);
            User.updateOne({username: transaction.receiver}, {$inc: {balance: 1}});

            res.json({
                "status": "success",
                "data": {
                    "transaction": doc
                }
            });
        } else {
            res.json({
                "status": "error",
                "message": "Could not make the transaction"
            });
        }
    })
}

当我测试:

代码语言:javascript
复制
db.getCollection('users').updateOne({username: "aidenn"}, {$inc: {balance: 1}})

在RoboT3中,文档更新。为什么它不能在我的控制器上工作?

我在邮递员考试时:

代码语言:javascript
复制
{
    "sender": "Nicolas",
    "receiver": "aidenn",
    "amount": 1
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-10 14:05:10

这应该是可行的: saveOne向您返回一个承诺:

代码语言:javascript
复制
const create = (req, res) => {
  let transaction = new Transaction();
  transaction.sender = req.body.sender;
  transaction.receiver = req.body.receiver;
  transaction.amount = req.body.amount;
  transaction.save(async (err, doc) => {
    if(!err) {
        console.log(transaction.receiver);
        const updated = await User.updateOne({username: transaction.receiver}, {$inc: {balance: 1}});
       //verify the log
        console.log({updated})

        res.json({
            "status": "success",
            "data": {
                "transaction": doc
            }
        });
    } else {
        res.json({
            "status": "error",
            "message": "Could not make the transaction"
        });
    }
})

在这里,使用存储库模式和服务可以更好地使用可阅读的代码:

代码语言:javascript
复制
const create = async (req, res) => {
  try {
    let transaction = new Transaction();
    transaction.sender = req.body.sender;
    transaction.receiver = req.body.receiver;
    transaction.amount = req.body.amount;
    const transactionSaved = await transaction.save();
    const updated = await User.updateOne(
      { username: transaction.receiver },
      { $inc: { balance: 1 } },
    );
    res.json({
      status: 'success',
      data: {
        transaction: transactionSaved,
      },
    });
  } catch (e) {
    res.json({
      status: 'error',
      message: 'Could not make the transaction',
    });
  }
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72187719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档