首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从以太那里撤回嵌套在结构内的映射

从以太那里撤回嵌套在结构内的映射
EN

Ethereum用户
提问于 2023-01-18 00:49:52
回答 1查看 117关注 0票数 0

你好,埃瑟姆社区,

在我的稳固代码中有几个结构体来组织事情。下面是代码中的一个结构:

代码语言:javascript
复制
struct Staking {
  uint total;
  uint currentIndex;
  mapping(address => uint) registry;
}

Staking     public staking;

在编译时,我还会在abi中得到一个标记() getter。现在,在我的前端,我已经配置了以赛人npm库,并试图检索我的所有结构。呼叫

代码语言:javascript
复制
const data = await ethers.gameContract.staking();

给我这个,JSON.stringified

代码语言:javascript
复制
[{"type":"BigNumber","hex":"0x00"},{"type":"BigNumber","hex":"0x00"}]

我可以确认,这两个是总计和currentIndex uints。但我看不见注册表映射。

是否有一种方法可以查询像这样建模的数据,还是应该在契约块的顶层声明所有这些属性(这应该通过为abi中的每个支柱创建一个getter来解决这个问题),或者创建将检索这些嵌套映射的自定义getter函数?

编辑:从VSCode中的Remix调用staking(),我得到以下数据:

代码语言:javascript
复制
{"0":"0","1":"0","total":"0","lastIndex":"0"}

现在我真的很困惑了。该对象中的前2项"0“和"1”键实际上是映射中的项吗?也许我问错了问题。但我还是想不出如何查询这个映射。

谢谢!

EN

回答 1

Ethereum用户

回答已采纳

发布于 2023-01-18 05:44:26

ABI不包含它们,因为它们的动态大小。地图和数组的附件不返回全部数据,因此,我们根据需要进行查询。

对于映射,我们没有任何方法来迭代它。这对于声明状态变量非常有效,但是不可能为带有数组或map (动态)成员的结构提供参数。

此外,结构被转化为其所有基本成员的元组,而非基本成员被从元组中剥离。

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/143185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档