首页 > 解决方案 > MongoDB:如何 1. 锁定集合 2. 读取 3. 基于读取的写入?

问题描述

我有以下格式的用户集合:

{
  username: "john"
}

以及以下格式的交易集合:

{
  username: "john",
  amount: 100
}

为了获得用户余额,我将使用他们的用户名获取所有交易并将金额相加。

我需要在我的应用程序中添加“提款”功能,从他们的余额中减去一些价值,并将真钱转移到他们的银行账户。

代码看起来像这样:

function withdraw(username, amount) {
  if amount <= transactions.find({"username": username}).map(tx => tx.amount).sum() {
    // NOTE: transaction with negative value because it's a withdrawal operation
    transactions.insert({"username": username, "amount": -amount});
    send_real_money_to_user_bank_account(USER_CARD_NUMBER, amount);
  }
}

问题: 我需要确保在andtransactions之间没有写入集合,并且只调用一次,因为我不想意外地将钱多次转移到用户的银行账户。如何在 node.js + mongodb 中执行此操作?transactions.findtransactions.insertsend_real_money_to_user_bank_account

标签: node.jsmongodb

解决方案


推荐阅读