Я пытаюсь вызвать цепной код от другого, чтобы получить некоторые данные, которые понадобятся для выполнения определенной функции. Когда я делаю invokeChaincode, я получаю «.protos.Response» в качестве ответа, и я не знаю почему.
Моя функция запроса выглядит так:
async queryFrigs(stub, args) {
let first = "FRIG1";
let last = "FRIG999";
let it = await stub.getStateByRange(first, last);
let results = [];
while(true) {
let res = await it.next();
if(res.value && res.value.value.toString()) {
let jsonRes = {};
console.log (res.value.value.toString('utf8'));
jsonRes.Key = res.value.key;
try {
jsonRes.Record = JSON.parse(res.value.value.toString('utf8'));
}
catch(err) {
console.log(err);
jsonRes.Record = res.value.value.toString('utf8');
}
results.push(jsonRes);
}
if(res.done) {
console.log('End of data');
await it.close();
return Buffer.from(JSON.stringify(results));
}
}
}
И мой цепной код, где я пытаюсь вызвать этот запрос, выглядит так (просто для проверки, без вашей реальной функции):
async sale(stub, args) {
let frigs = await stub.invokeChaincode('frigCC', ['queryFrigs'], 'canal-frig');
console.log('frigs.toString() >>>' + frigs.toString()); // prints .prontos.response
console.log('JSON.stringify(frigs) >>>' + JSON.stringify(frigs)); // prints {"status": 200, "message": "", "payload": {"buffer": {"type": "Buffer", "data": [... buffer result correspondent to the data. ..]}, "offset": 11, "markedOffset": - 1, "limit": 689, "littleEndian": true, "noAssert": false}}
}
Я хотел бы получить данные в исходном формате, без преобразования в буфер. Может кто-нибудь мне помочь? Что я делаю не так?