Как написать строку запроса для получения значения из книги блокчейна? - PullRequest
0 голосов
/ 09 января 2019

Я хочу запросить мой регистр блокчейна и получить все значения в формате JSON.

Я написал код ниже, но он не работает для меня.

Я сохранил некоторые значения в блокчейне. Если у меня есть одно значение, то это работает для меня. Но загрузка всех данных для моего запроса не работает.

func (t * Actpay) OrderQuery (заглушка shim.ChaincodeStubInterface, args [] строка) peer.Response {

// "queryString"
if len(args) < 1 {
    return shim.Error("Incorrect number of arguments. Expecting 1")
}
//status := args[0]

//queryString := fmt.Sprintf("{\"selector\":{\"Status\":\"%s\"}}", status)
queryString := "{\"selector\":{\"Status\":\"PO_REJECTED\"}}"


fmt.Printf("queryString:\n%s\n", queryString)
resultsIterator, err := stub.GetQueryResult(queryString)
//defer resultsIterator.Close()    

if err != nil {
    return shim.Error("Unable to retrieve value")
}
defer resultsIterator.Close()
var buffer bytes.Buffer
buffer.WriteString("[")
var bArrayMemberAlreadyWritten = false
for resultsIterator.HasNext() {
    queryResponse,err := resultsIterator.Next()
    if err != nil {
        return shim.Error("failed")
    }
    // 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)
    fmt.Printf(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("- OrderQuery queryResult:\n%s\n", buffer.String())
return shim.Success(buffer.Bytes())

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...