bugfix> node.js > 投稿

私はこのコントローラーを持っています

const getBalance = async (address, network) => {
  const web3 = getWeb3Instance(network);
  const currentBalance = await web3.eth.getBalance(address);
  const formattedBalance = web3.utils.fromWei(currentBalance, 'ether');
  return formattedBalance
};

これは私がルートでそれを使用する方法です:

router.post('/getBalance', (req, res) => {
  const {address,network} = req.body
  try {
    res.status(200).send(controllers.getBalance(address,network))
  } catch (e) {
    res.status(404).send(`${e}`)
  }
});

私が console.log(formattedBalance) 正解をログに記録しますが、応答では空のオブジェクトを送信しています {} 理由はわかりませんが、expressとweb3でnodejsを使用しています。 何か提案がありますか?

回答 1 件
  • あなたは言葉を持っています async あなたの機能の前に。置くと関数の動作が異なります async その前に。それは約束のように機能します。

    試しましたか console.log(controllers.getBalance(address,network)) ?ブラウザに表示されます Promise { <pending> }

    問題は、保留中の約束を送り返すことです。

    これに変更してください。約束が解決するまで待つ必要があります

    router.post('/getBalance', async (req, res) => {
      const {address,network} = req.body
      try {
        let balance = await controllers.getBalance(address,network);
        res.status(200).send(balance)
      } catch (e) {
        res.status(404).send(`${e}`)
      }
    });
    
    

あなたの答え