合同代码:
async function queryCar(ctx, query) {
let queryResult = await.ctx.stub.getQueryResult(query);
console.log(queryResult.toString());
return queryResult.toString();
}
我如何在API中调用该函数:
var stringQuery = `{"selector": {"id": "17"}}`
newQuery = await contract.evaluateTransaction('richQuery',stringQuery);
console.log(JSON.parse(newQuery));
stringQuery
的值不是对CouchDB
的有效查询吗?
也许我在使用该函数时出错,因为文档中谈到了该函数返回StateQueryIterator的情况。谁能帮助我了解如何在JavaScript中使用getQueryResult
函数?谢谢!
答案 0 :(得分:1)
这是因为queryResult
是一个对象,而Object.toString()
返回[object Object]
。使用JSON.stringify
将对象转换为字符串,然后使用JSON.parse
将其找回对象:
return JSON.stringify(queryResult);
并且:
console.log(JSON.parse(newQuery));
答案 1 :(得分:0)
现在解决了!我的问题是我不知道如何遍历它正确返回的键。它的返回类型是StateQueryIterator,我没有正确使用它。解决了,我得到了结果。