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