javascript - 我无法获得从solidity 到javascript 的请求列表
问题描述
据我所知,我无法获得从solidity到javascript的结构数组,因此对来自javacript的每个请求发出单独的请求:
const address = context.params.id;
const campaign = Campaign(address);
const requestCount = await campaign.methods.getRequestsCount().call();
const donatorsCount = await campaign.methods.donatorsCount().call();
// this returns: requests.count 4
console.log("requests.count", requestCount);
const requests = await Promise.all(
Array(requestCount)
.fill() // I tried fill(0)
.map((element, index) => {
return campaign.methods.requests(index).call();
})
);
console.log("requests", requests);
我有 4 个请求,但我总是只收到第一个请求
解决方案
requestCount
包含string
值4
。_
而且因为它不是Number
指定数组长度的类型,所以Array() 构造函数将它作为新创建的数组的一个元素(值“4”)。
解决方案:将值作为类型传递Number
以创建一个 4 项数组。
Array(parseInt(requestCount))
除了循环遍历每个索引,您还可以创建一个返回整个数组的 Solidity 函数
function getRequests() external view returns (Request[] memory) {
return requests;
}
并从 JS 调用它
const requests = await campaign.methods.getRequests().call();
推荐阅读
- php - Laravel 主页加载太慢(30 秒)
- jenkins - 使用自定义逻辑自定义 Jenkins 结果 UI
- node.js - pm2+ 使用生态系统文件时不显示版本控制
- servicenow - ATF,自定义步骤配置(选择一个组,随机用户应该自动填充,这应该作为模拟工作(而不是 OOB 模拟))
- reactjs - 无法从本地存储中存储和获取数据
- docker - 码头集装箱中石英批次的复制品
- html - 带有发送邮件的嵌入式链接的 HTML 代码问题
- makefile - Make:一次调用两个虚假目标时“对目标无事可做”
- python - [unixODBC][驱动程序管理器]无法打开 lib 'com.informix.jdbc.IfxDriver':找不到文件
- ios - Highcharts iOS Swift:HIGauge.dial 在 iOS swift 中总是返回 nil