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());
你知道如何访问数据吗?
谢谢
result
将是一个 Buffer 对象。您可以使用 .toString()
将其转换为 javascript 字符串,即 result.toString()
。由于您调用的事务定义了返回的结果,因此您需要了解事务返回的内容,例如它可能是一个 JSON 字符串,因此要将其转换为 Javascript 对象,您可以使用 JSON.parse
.
好的,我找到了解决方案,问题是返回的对象应该在返回 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;
我正在尝试使用方法 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());
你知道如何访问数据吗? 谢谢
result
将是一个 Buffer 对象。您可以使用 .toString()
将其转换为 javascript 字符串,即 result.toString()
。由于您调用的事务定义了返回的结果,因此您需要了解事务返回的内容,例如它可能是一个 JSON 字符串,因此要将其转换为 Javascript 对象,您可以使用 JSON.parse
.
好的,我找到了解决方案,问题是返回的对象应该在返回 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;