node.js - getHistoryForKey() Hyperledger Fabric 从 Buffer Nodejs 获取交易

标签 node.js hyperledger-fabric hyperledger

我正在尝试使用 getHistoryForKey() 方法获取 nodejs 中某个值的交易和修改,但是当我尝试查看链码响应时 这是返回的数据:

{ type: 'Buffer',
  data: [ 91, 111, 98, 106, 101, 99, 116, 32, 79, 98, 106, 101, 99, 116, 93 ] }

但我无法访问交易详细信息。

这是我用来从链码获取交易详细信息的代码

    const result = await contract.evaluateTransaction('getHistory', req.params.id.toString());
    let resultStr=JSON.stringify(result);
    console.log(JSON.parse(resultStr));
    console.log(JSON.parse(resultStr).data.toString());

您知道如何访问数据吗? 谢谢

最佳答案

好的,我找到了解决方案,问题是返回的对象应该在返回 Buffer 之前迭代

这段代码对我有用。

 let iterator = await ctx.stub.getHistoryForKey(id);
    let result = [];
    let res = await iterator.next();
    while (!res.done) {
      if (res.value) {
        console.info(`found state update with value: ${res.value.value.toString('utf8')}`);
        const obj = JSON.parse(res.value.value.toString('utf8'));
        result.push(obj);
      }
      res = await iterator.next();
    }
    await iterator.close();
    return result;  

关于node.js - getHistoryForKey() Hyperledger Fabric 从 Buffer Nodejs 获取交易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59093015/

相关文章:

node.js - 从 Docker 容器 Web 应用程序内部触发主机操作系统上的事件

hyperledger-fabric - 无法创建新的连接: desc = transport: error while dialing: dial tcp 172. 19.0.4:9051:连接:连接被拒绝Hyperledger结构

hyperledger-fabric - 启动 super 账本排序程序失败

hyperledger-fabric - Hyperledger Fabric CA : http: TLS handshake error from 127. 0.0.1:53356:tls: 接收到长度为 21536 的超大记录

docker - 错误 : error getting endorser client for channel

hyperledger-fabric - Hyperledger Explorer 配置错误

javascript - 在 firebase 上使用 Dialogflow Fulfillment Library v2 结束对话?

javascript - 如何在 node.js 中实现 readUInt16BE 函数

javascript - {app, BrowserWindow} 在 JavaScript (node.js) 中是什么意思?

Java Hyperledger-panic : runtimr error: invalid memory address or nil pointer dereference