![](/img/trans.png)
[英]Hyperledger Fabric NodeJS Shim - getHistoryForKey
[英]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.