首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从映射到结构数组中检索元素

如何从映射到结构数组中检索元素
EN

Ethereum用户
提问于 2019-11-14 16:18:33
回答 1查看 114关注 0票数 0

我最近开始玩SmartContracts,我遇到了一个问题,我找不到解决的办法。

我的智能契约中有以下结构和映射:

代码语言:javascript
复制
struct Object{
    string objId;
    uint256 rank;
}

mapping(address => Object[]) public userObjects;

使用松露控制台,我试图在映射中检索userObjects中的对象,如下所示:

代码语言:javascript
复制
truffle(development)> object = myContract.userObjects(accounts[0], 0)

truffle(development)> object
Result { '0': '1', '1': <BN: a>, objId: '1', rank: <BN: a> }

看结果,我可以看到objId和排名是正确的。现在,我想访问这些字段,但我不知道如何才能做到这一点。我尝试了以下几点:

代码语言:javascript
复制
truffle(development)> object.objId
undefined
truffle(development)> object.rank
undefined

我引用的属性不正确吗?一开始有可能做到这一点吗?

我使用的是块菌版本5.0.32

如果我错过了一些明显的东西,很抱歉。

EN

回答 1

Ethereum用户

回答已采纳

发布于 2019-11-14 16:47:06

我知道我做错了什么。问题在于对象的分配:

而不是:

代码语言:javascript
复制
truffle(development)> object = myContract.userObjects(accounts[0], 0)

我应该异步分配对象。

代码语言:javascript
复制
truffle(development)> object = await myContract.userObjects(accounts[0], 0)
truffle(development)> object.postId
'1'

尽管异步等待使我能够访问object.postId,但我仍然不明白为什么在之前对象也被正确分配了。但不管怎样,我的检索问题现在已经解决了。

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

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

复制
相关文章

相似问题

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