当前位置: 首页 > 知识库问答 >
问题:

如何修复异步forEach推送?[副本]

太叔栋
2023-03-14
[
  {
    "id": 1,
    "name": "Wallet Name",
    "wallet_type": "MN",
    "icon": "fa fa-bank",
    "color": "#000000",
    "credit_limit": 3000,
    "due_day": 22
  }
]
[
  {
    "id": 1,
    "name": "Wallet Name",
    "wallet_type": "MN",
    "icon": "fa fa-bank",
    "color": "#000000",
    "credit_limit": 3000,
    "account_value": 1200.55,
    "due_day": 22
  }
]
async index(req, res) {
    const wallets = await Wallet.findAll({
      where: {},
      attributes: [
        'id',
        'name',
        'wallet_type',
        'icon',
        'color',
        'credit_limit',
        'due_day',
      ],
      order: [['name', 'ASC']],
    });

    const finalObject = [];

    wallets.forEach(async wallet => {
      const currentItem = wallet.dataValues;
      const { id } = await currentItem;
      const { sum_credits } = await WalletsResume.sumCredits(id);
      const { sum_debits } = await WalletsResume.sumDebits(id);
      const sum_account_value = (sum_credits - sum_debits).toFixed(2);
      currentItem.account_value = sum_account_value;
      finalObject.push(currentItem);
      console.log(`pushed ${id}`);
    });

    console.log(`-------------------------`);
    console.log(finalObject);
    return res.json(finalObject);
  }
[]

我不知道如何修复它(我可以更改我所有的代码)

太感谢你们了!

共有1个答案

霍襦宗
2023-03-14

Foreach不等待异步调用。切换到for.in/for.of或常规for循环。

使用for-of的示例

async index() {
  // Fetch wallets here

  for (const wallet of wallets) {
    const currentItem = wallet.dataValues;
    const { id } = await currentItem;
    const { sum_credits } = await WalletsResume.sumCredits(id);
    const { sum_debits } = await WalletsResume.sumDebits(id);
    const sum_account_value = (sum_credits - sum_debits).toFixed(2);
    currentItem.account_value = sum_account_value;
    finalObject.push(currentItem);
    console.log(`pushed ${id}`);
  }

  // Then continue normally
}

使用for-in的示例

async index() {
  // Fetch wallets here

  for (const walletIndex in wallets) {
    const currentItem = wallets[walletIndex].dataValues;
    // rest of code as above
  }

}
 类似资料:
  • 怎么修这个东西?我需要“Karetski”用户名而不是“Pavelmetsko”

  • 即使当我退出活动并转到另一个活动时,此代码仍然有效。为了理解这一点,我去了另一个活动,删除了Firebase中的路径,由于该路径不再存在,应用程序崩溃了。我想在退出活动时禁用此代码,我该怎么做?

  • 将docker图像推送到注册表时,我收到以下消息: 唯一的方法是通过web界面在docker repository中创建标记,然后docker push工作。 是否有创建docker push的命令行?

  • 问题内容: 我正在尝试将XML发送到服务器并取回XML。有什么办法可以解决/忽略此异常吗? 我知道状态行为空,这会引发此错误。 问题答案: 尝试看看您的服务器实际上返回了什么!它可能不是有效的HTTP响应。您可以使用以下方式将原始的http请求发送到服务器: 响应应类似于:

  • 首选项:我的android首选项是 API级别18 Android 4.3 这就是我如何读取url

  • 当我做一个,我得到我的分支: 当我尝试推送git时,我得到: 当我检查分支时,它不在那里: 我该如何解决这个问题?