Closed zhuku9126 closed 6 years ago
查询到code为0,就说明已经得到交易数据了呀,此时返回信息里的data就是交易数据。 你说的数据还是旧的是什么意思呢?
{
"code": 0,
"data": {
"data": null,
"contractAddress": "",
"type": "binary",
"nonce": 136,
"gasLimit": "30000",
"gasUsed": "20000",
"chainId": 1001,
"from": "n1JmhE82GNjdZPNZr6dgUuSfzy2WRwmD9zy",
"to": "n1JmhE82GNjdZPNZr6dgUuSfzy2WRwmD9zy",
"value": "1000000000000000000",
"hash": "f9549a5c01f50f372607b9fd29bf15d483246578f6cc7008d6e2a537920802e6",
"gasPrice": "1000000",
"status": 1,
"timestamp": 1525508076
},
"msg": "success"
}
比如一个用户发布内容的功能,原来已经有三条数据,然后新增加了一条,这个时候,查询到 code 为0后,我立刻去查询用户发布的内容,还是三条数据,新增加的数据没有返回。 今天后来我改成用 txhash 查询收据的方法,得到 status 为 1后,再读取内容,就是正常的了。 我猜 nebPay 的 queryPayInfo 方法有 bug。不能真的反应合约调用成功了。
哦哦,是这个情况呀。其实queryPayInfo(serialNumber)
也是在查询txhash,注意返回的data
里面有个status
,你可以先判断code==0,再判断status==1,这样就可以了。
原理是这样的:当code=0的时候只是用txhash能查到这个记录了,但交易很可能还处于pending状态(status=2),过一会才会执行并上链(status=1),这时候才能查到新增的结果。
天坑啊,最好在例子里面更新或者说明下,我在这个问题上折腾了很久,和其他开发者沟通,他们也有这个困惑。
抱歉哈,这个地方当时也没注意,明天更一下文档和例子。
根据 nebPay.queryPayInfo(serialNumber) 查询到 code 为 0 时,再去查询交易数据,发现数据还是旧的。