如何解决如何在节点js中使用tronweb不受限制地获取tron网络中合同的所有事件日志?
如何在js节点中使用tronweb来获取tron网络中合同的所有事件日志?还是需要任何中间件存储(例如redis等)? 加载dapp主页之前需要一次获取所有数据。 dApp是在react js中制作的。而且Trongrid api在单个请求中有200条记录的限制。
解决方法
您可以使用fingerprint
(其作用类似于继续令牌)
async getContractTransferEventsByUser(eventName,userId) {
let result = [];
let tronGrid = new TronGrid(this.tronWeb);
try {
let continueToken = '';
while (true) {
let res = await tronGrid.contract.getEvents(YOUR_CONTRACT_ADDRESS,{
only_confirmed: true,event_name: eventName,limit: 200,fingerprint: continueToken,order_by: "timestamp,asc",min_timestamp: minTime,//remove if you don't need it
filters: { id: userId.toString() } //if you need to filter events by one or more values,for example,by user id (if this information is presented in event log),remove if you don't need it.
});
if (!res.success) {
console.warn("Can't get events for the contract");
break;
}
result = result.concat(res.data);
if (typeof res.meta.fingerprint !== 'undefined') {
continueToken = res.meta.fingerprint;
} else {
break;
}
}
} catch (error) {
console.error(error);
} finally {
return result;
}
},
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。