我正在尝试对cc02
来自另一个链代码(cc01
)的链代码()执行查询,两者都驻留在同一通道上。当我尝试通过调用来调用查询函数时stub.invokeChaincode(...)
,该命令返回的是 a[Object object]
而不是查询的结果。有人可以告诉这是什么错误吗?
更多细节
查询功能的最小版本cc01
如下:
async queryOtherContract(stub, args) {
let chaincodeName = args[0]; //cc02
let fcn = args[1]; //query
let fcnArgs = args[2]; //key
let channel = args[3]; //defaultchannel
let queryResponse = await stub.invokeChaincode(chaincodeName, [fcn, fcnArgs], channel);
console.log('Query response: ', JSON.stringify(queryResponse));
}
输出:
Query response: {"status":200,"message":"","payload":{"buffer":{"type":"Buffer","data":[8,6...108]},"offset":9,"markedOffset":-1,"limit":59,"littleEndian":true,"noAssert":false}}
有效载荷缓冲区解码为[Object object]
查询到的函数cc02
如下:
async query(stub, args) {
let key = args[0]; //key
let valueAsBytes = await stub.getState(key);
let valString = valueAsBytes.toString('utf8');
console.log('Value String: ', valString);
return shim.success(Buffer.from(valString));
}
输出:Value String: Value001
我也尝试了不同的变体,包括直接发送valueAsBytes
和直接返回valString
,而不是将其包装在 shim 函数中。我在这做错了什么?