我无法获得从 solidity 到 javascript 的请求列表
I cannot get a list of requests from solidity to 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() constructor 将其作为 one 元素(值“4”)新创建的数组。
解决方案:将值作为类型 Number
传递以创建 4 项数组。
Array(parseInt(requestCount))
除了循环遍历每个索引,您还可以创建一个 returns 整个数组
的 Solidity 函数
function getRequests() external view returns (Request[] memory) {
return requests;
}
并从 JS 中调用它
const requests = await campaign.methods.getRequests().call();
据我所知,我无法获得从 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() constructor 将其作为 one 元素(值“4”)新创建的数组。
解决方案:将值作为类型 Number
传递以创建 4 项数组。
Array(parseInt(requestCount))
除了循环遍历每个索引,您还可以创建一个 returns 整个数组
的 Solidity 函数function getRequests() external view returns (Request[] memory) {
return requests;
}
并从 JS 中调用它
const requests = await campaign.methods.getRequests().call();