我无法获得从 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 包含 string4

并且因为它不是指定数组长度的 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();