如何在链码中添加事件? (Hyperledger面料)

时间:2019-06-20 05:14:26

标签: javascript events hyperledger-fabric hyperledger hyperledger-chaincode

我正在尝试使事件在Hyperledger Fabric中工作。我已经在链代码中编写了setEvent函数,并在应用程序文件中添加了一个侦听器(addContractListener)。似乎什么都没发生

在我的合同文件中,紧随putState函数之后:

await this.ctx.stub.setEvent('event1', data);

在我的应用程序文件中,在commitTransaction函数之后:

let eventTxn = await contract.addContractListener('some-string', 'trade-network',
        (err, event, blkNum, txid, status) => {
            console.log('event received', status, event, blkNum, txid);
            if (err) {
                this.emit('error', err);
            } else if (status && status === 'VALID') {
                // only if a valid block is committed should we emit an event
                let evt = event.payload.toString('utf8');
                evt = JSON.parse(evt);
                if (Array.isArray(evt)) {
                    for(const oneEvent of evt) {
                        this.emit('ChaincodeEvent', oneEvent);
                    }
                }
                else {
                    this.emit('ChaincodeEvent', evt);
                }
            }
       },
       {filtered: false}
    );

我在合同和应用程序中添加了以上代码行。在执行应用程序功能时,似乎什么也没有发生,并且程序被卡住,不返回任何响应。即使“ console.log”也没有执行,这意味着它没有完全进入功能。

我期望应用程序功能能够执行。 有人可以指导我如何在Hyperledger Fabric中工作一个简单的事件吗?

1 个答案:

答案 0 :(得分:1)

链代码event1的事件名称和您正在监听的trade-network的事件名称可能不匹配