路由正在发送空响应
route is sending empty response
我有这个控制器
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)
它记录了正确的答案但在响应中它发送了空对象 {}
我不知道为什么,我正在使用 nodejs 和 web3。
有什么建议吗?
你的函数前面有 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}`)
}
});
我有这个控制器
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)
它记录了正确的答案但在响应中它发送了空对象 {}
我不知道为什么,我正在使用 nodejs 和 web3。
有什么建议吗?
你的函数前面有 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}`)
}
});