我最近开始玩SmartContracts,我遇到了一个问题,我找不到解决的办法。
我的智能契约中有以下结构和映射:
struct Object{
string objId;
uint256 rank;
}
mapping(address => Object[]) public userObjects;使用松露控制台,我试图在映射中检索userObjects中的对象,如下所示:
truffle(development)> object = myContract.userObjects(accounts[0], 0)
truffle(development)> object
Result { '0': '1', '1': <BN: a>, objId: '1', rank: <BN: a> }看结果,我可以看到objId和排名是正确的。现在,我想访问这些字段,但我不知道如何才能做到这一点。我尝试了以下几点:
truffle(development)> object.objId
undefined
truffle(development)> object.rank
undefined我引用的属性不正确吗?一开始有可能做到这一点吗?
我使用的是块菌版本5.0.32
如果我错过了一些明显的东西,很抱歉。
发布于 2019-11-14 16:47:06
我知道我做错了什么。问题在于对象的分配:
而不是:
truffle(development)> object = myContract.userObjects(accounts[0], 0)我应该异步分配对象。
truffle(development)> object = await myContract.userObjects(accounts[0], 0)
truffle(development)> object.postId
'1'尽管异步等待使我能够访问object.postId,但我仍然不明白为什么在之前对象也被正确分配了。但不管怎样,我的检索问题现在已经解决了。
https://ethereum.stackexchange.com/questions/77496
复制相似问题