Hyperledger Fabric javascript 链码读取瞬态数据

阿克谢·苏德

我正在从超级账本结构节点应用程序传递一个 json 对象并将其转换为缓冲区,如下所示:

const transientData = (transient && transient.length > 0) ? {data: Buffer.from(JSON.stringify(transient[0]))} : null;

transientData然后被传递到请求对象如下所示:

        let request = {
            chaincodeId: smartContractName,
            fcn: funcName,
            args: args ? [JSON.stringify(args)] : [],
            chainId: channelName,
            txId: tx_id,
            collection-config: collections,
            transientMap: transientData
        };

问题是,当我尝试将这个瞬态映射接收到链码中并尝试使用 将转换后的缓冲区记录到字符串中时transientData.get('data').toString(),它显示以下输出:

ByteBufferNB(offset=1029,markedOffset=-1,limit=1222,capacity=1222)

但是,我期待字符串对象。我无法将此 ByteBuffer 转换为字符串。我还尝试打印此缓冲区并显示以下输出:

ByteBuffer {
  buffer: <Buffer 0a c6 07 0a 91 01 08 03 10 01 1a 0c 08 df ef ca f8 05 10 80 bf df 80 01 22 0c 61 73 73 65 74 63 68 61 6e 6e 65 6c 2a 40 66 61 32 36 33 61 32 30 65 61 ... >,
  offset: 1029,
  markedOffset: -1,
  limit: 1222,
  littleEndian: true,
  noAssert: false }

任何建议,将不胜感激

更新:当我记录 的输出时transientData.get('data').buffer.toString(),它显示以下输出:

�
�
������߀"
        assetchannel*@fa263a20eaf15aac5eeac0ad2056a25193acc66f05c3316f1ee8d5062ac75de8:
                                                                                        assetccB �_찣ݹ��,R�Z���眕ӳ8v�pP�
�
+
)       assetcc��
submitTransactionReqLock�
data�{"sonefield":"T08700d-5c63-49a2-914f-535fd1abb045","collection":"xxxx","xxx":"xxx","xxxx":"xxx xx xxxx,"locked":false}
阿克谢·苏德

在这里为任何正在寻找答案的人发布解决方案。

我设法通过转换得到这个工作ByteBufferArrayBuffer使用ArrayBuffer,我创建了一个新的缓冲区对象,然后使用它。

const data = JSON.parse(new Buffer(transient.get('data').toArrayBuffer()).toString());

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从Hyperledger Fabric区块链外部的api读取链码

Hyperledger Fabric 链码升级

Hyperledger Fabric链码实例化错误

限制链码访问-Hyperledger Fabric

Hyperledger Fabric,停止并行链码执行

Hyperledger Fabric链码-无法使用InvokeChaincode从另一个链码读取数据。状态200,但有效载荷为空

Hyperledger Fabric区块链信息

hyperledger Fabric 链码开发模式连接错误

Hyperledger Fabric在构建链码时找不到go文件

Hyperledger Fabric:如何从链码外部访问Level或Couch DB?

Hyperledger Fabric:在链码外部修改分类帐

Hyperledger-fabric:链码部署连接错误

如何从Hyperledger Fabric链码打印和查看日志

Hyperledger Fabric:对等链码实例化错误

从Hyperledger Fabric中的链码返回值

Node.js还是Go for Hyperledger Fabric的链码开发?

CentOS 上的 Hyperledger Fabric 1.0 背书链码时出错?

Hyperledger Fabric:实现链码级访问控制

Kubernetes 中的 Hyperledger Fabric:无法实例化链码

使用链码在 HyperLedger Fabric 上创建令牌

如何在单通道Hyperledger Fabric的两个链码之间共享数据?

无法从Hyperledger Fabric中的链码实例将数据上传到Google云存储

无法使用 Hyperledger Fabric v1.0.0 链码查询所有历史/计数数据

使用JAVA的Hyperledger Fabric链代码

如何使用 Hyperledger Fabric 部署链代码?

查看Hyperledger Fabric中的区块链块

在Hyperledger Fabric中读取(查询)事务流

在多个节点上的Hyperledger Fabric区块链上执行链码时,gRPC失败

Hyperledger Fabric中的部分数据隐私