1

我正在尝试使用链代码中的查询从区块链中获取数据。我在区块链中调用了大约 2,50,000 条记录,并尝试使用查询来获取数据。当我运行链代码并获取对等日志时,我收到以下错误。

对等日志中的链码错误:

对等日志中的链码错误

这是我的代码:

queryStringsa := fmt.Sprintf("{\"selector\":{\"$and\":[{\"savesID\":{\"$ne\":\"%s\"}},{\"bankID\":{\"$eq\":\"%s\"}},{\"ytdSavedFlag\":{\"$ne\":\"%s\"}},{\"saveMonthYear\":{\"$eq\":\"%s\"}}]},\"use_index\":[\"_design/indexSavesDataReportDoc\",\"indexSavesDataReportName\"]}","null",bankidsave,"Yes",lastImportDatekey)
queryResultss11sa, errsav := getQueryResultForQueryString(stub, queryStringsa)


// getQueryResultForQueryString
func getQueryResultForQueryString(stub shim.ChaincodeStubInterface, queryString string) ([]byte, error) {
 _scbLogger.Infof(string("**********************************"))
 _scbLogger.Infof(string("getQueryResultForQueryString queryString : "+ queryString))
 _scbLogger.Infof(string("**********************************"))

 resultsIterator, err := stub.GetQueryResult(queryString)

 if err != nil {
    _scbLogger.Error("Error Starting SCB-Efficiency Chaincode is " + string(err.Error()))
    return nil, err
 }
 defer resultsIterator.Close()

  // buffer is a JSON array containing QueryRecords
   var buffer bytes.Buffer
   buffer.WriteString("[")
   bArrayMemberAlreadyWritten := false
   fmt.Println("resultsIterator length : ", (resultsIterator))
   for resultsIterator.HasNext() {
    queryResponse, err := resultsIterator.Next()
    //fmt.Println("queryresponse inside for next : ", queryResponse)
    if err != nil {
        fmt.Println("$$$$$$$$$$$ error in reuslt iterator  : ", err)
        return nil, err
    }
    // 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
    //fmt.Println("string(queryResponse.Value) : ",string(queryResponse.Value))
    buffer.WriteString(string(queryResponse.Value))
    buffer.WriteString("}")
    bArrayMemberAlreadyWritten = true
 }
 buffer.WriteString("]")
 //fmt.Printf("- getQueryResultForQueryString queryResult:\n%s\n", buffer.String())
 return buffer.Bytes(), nil
}

我在同一个函数中有 5 组不同的查询。有时很少有查询返回查询结果,有时没有查询给出结果,而是显示上述错误。

当我在 CouchDB fauxton 中运行相同的查询时,我得到了查询结果。当我为更少的记录运行相同的函数时,查询可以正常工作而不会出现任何错误。

4

0 回答 0