0
我想在chaincode中执行丰富的查询。每个同行都有CouchDB,我在marble source code中有跟随示例。 但我没有得到任何结果(没有错误),只是一个空的数组。丰富的查询没有结果 - Hyeperledger织物v1.0
当我运行在CouchDB中相同的查询,直接就没有问题,我得到一个或多个结果。
这是chaincode源代码我使用:
if len(args) == 3 && args[1] == "complex" {
fmt.Printf("Query complex\n")
if isJSON(args[2]) {
fmt.Printf("Complex query: %s\n", args[2])
resultsIterator, err := stub.GetQueryResult(args[2])
if err != nil {
jsonResp := "{\"Error\":\"Not able to make the query, see error: " + err.Error() + "\"}"
return shim.Error(jsonResp)
}
defer resultsIterator.Close()
// buffer is a JSON array containing QueryRecords
var buffer bytes.Buffer
buffer.WriteString("[")
bArrayMemberAlreadyWritten := false
for resultsIterator.HasNext() {
queryResponse, err := resultsIterator.Next()
if err != nil {
jsonResp := "{\"Error\":\"Not able to make the query, see error: " + err.Error() + "\"}"
return shim.Error(jsonResp)
}
// Add a comma before array members, suppress it for the first array member
if bArrayMemberAlreadyWritten == true {
buffer.WriteString(",")
}
buffer.WriteString("{\"Key\":")
buffer.WriteString("\"")
buffer.WriteString(queryResponse.Key)
buffer.WriteString("\"")
buffer.WriteString(", \"Record\":")
// Record is a JSON object, so we write as-is
buffer.WriteString(string(queryResponse.Value))
buffer.WriteString("}")
bArrayMemberAlreadyWritten = true
}
buffer.WriteString("]")
fmt.Printf("Query Response: %s\n", buffer.String())
return shim.Success(buffer.Bytes())
}
jsonResp := "{\"Error\":\"The query is not a valid JSON\"}"
return shim.Error(jsonResp)
}
文本的屏幕截图非常不友好,特别是对于搜索引擎和屏幕阅读器。请复制并粘贴文本。 – Flimzy
@Flimzy屏幕截图不是来自Fabric的代码或错误或文本。所有这些都是我的chaincode(第一个)的自定义文本,第二个是Fauxton的查询结果。我没有看到为什么如果我从这里的屏幕截图复制/过去文本,搜索引擎会更有效率。 – AnTiToinE
我不是在谈论Fauxton屏幕截图。我在谈论第一张照片。 – Flimzy