簡體   English   中英

getHistoryForKey() Hyperledger Fabric 從 Buffer nodejs 獲取交易

[英]getHistoryForKey() Hyperledger fabric get transactions from Buffer nodejs

我正在嘗試使用 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());

你知道如何訪問數據嗎? 謝謝

OK,我找到了一個解決方案,問題是返回的對象應該在返回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;  

result將是一個 Buffer 對象。 您可以使用.toString()將其轉換為 javascript 字符串,即result.toString() 由於您調用的事務定義了返回的結果,因此您需要了解事務返回的內容,例如它可能是一個 JSON 字符串,因此要將其轉換為 Javascript 對象,您將使用JSON.parse

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM