You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hyperledger Composer Node.js SDK接收事件冗长,无法理解问题咨询

解决Hyperledger Composer Node.js SDK事件内容冗长、不易理解的问题

你遇到的情况太常见了——默认的事件输出塞了一堆框架元数据(比如$class、自动生成的eventId),把你真正关心的业务事件字段都给淹没了,可读性极差。别担心,咱们用几个简单的方法就能把事件内容梳理得清清楚楚。

1. 直接提取核心业务字段

最简单的方式就是解构事件对象,过滤掉SDK自带的元数据,只保留你在交易模型里定义的业务字段。比如假设你的BasicEvent包含assetId、newOwner这类业务属性,代码可以改成这样:

listen() {
  LOG.info('Awaiting events');
  this.bizNetworkConnection.on('event', (event) => {
    // 解构过滤掉元数据,剩下的就是纯业务数据
    const { $class, eventId, ...businessEventData } = event;
    LOG.info('New Event Received');
    LOG.info('Core Business Data:', businessEventData);
    
    // 要是你只需要特定字段,直接提取更直观
    // const { assetId, newOwner } = event;
    // LOG.info(`Asset ${assetId} was transferred to ${newOwner}`);
  });
}

2. 针对特定事件类型监听

如果你的业务网络里有多种事件类型,没必要监听所有event,直接指定你关心的事件类型,能减少干扰,处理起来也更精准:

listen() {
  LOG.info('Awaiting BasicEvent notifications');
  // 只监听org.namespace.BasicEvent类型的事件
  this.bizNetworkConnection.on('org.namespace.BasicEvent', (event) => {
    const { $class, eventId, ...businessEventData } = event;
    LOG.info('New BasicEvent:', businessEventData);
  });
}

3. 格式化日志提升可读性

如果需要保留元数据但希望输出更清晰,可以用Node.js的util.inspect或者JSON格式化来美化日志,同时把业务字段单独拎出来高亮展示:

const util = require('util');

listen() {
  LOG.info('Awaiting events');
  this.bizNetworkConnection.on('event', (event) => {
    LOG.info('Full Event Details:');
    // 格式化输出,让嵌套结构更易读
    LOG.info(util.inspect(event, { depth: null, colors: true }));
    
    // 单独提取并打印业务数据块
    const businessData = Object.fromEntries(
      Object.entries(event).filter(([key]) => !key.startsWith('$'))
    );
    LOG.info('\n--- Pure Business Event Data ---');
    LOG.info(JSON.stringify(businessData, null, 2));
  });
}

小提示

Hyperledger Composer事件里的$class是事件的完全限定类型标识,eventId是系统生成的唯一ID,这些都是框架用来识别事件的元数据,不是你定义的业务内容。你在CTO文件里声明的所有事件字段,都会直接挂在事件对象上,所以只要过滤掉带$前缀的字段,就能拿到干净的业务数据啦。

内容的提问来源于stack exchange,提问作者Dennis Miller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:32:28