Как я могу использовать выходные аргументы в строке запроса в качестве входных данных? - PullRequest
0 голосов
/ 12 июня 2019

ОБНОВЛЕНИЕ: Я настроил цепной код Marble для своих собственных целей, где я хочу отслеживать продукты через производственную систему. Таким образом, при каждой производственной операции будет записываться новая транзакция, в которой исходящий идентификатор из предыдущей операции станет входящим идентификатором этой станции. Теперь я могу сделать запрос по исходящему ID и увидеть все ingoingID, который стал этим исходящим ID. Но это только для одной операции. Поэтому, чтобы связать эти разные идентификаторы вместе, я хочу использовать полученный идентификатор из запроса в качестве входных данных для нового запроса.

Я пытаюсь получить доступ к аргументам из выходной строки запроса в Построить свою первую сеть .

Код выглядит так:

func (t *SimpleChaincode) queryMarbles(stub shim.ChaincodeStubInterface, args []string) pb.Response {

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

    queryString := args[0]

    queryResults, err := getQueryResultForQueryString(stub, queryString)
    if err != nil {
        return shim.Error(err.Error())
    }
    return shim.Success(queryResults)
}
func getQueryResultForQueryString(stub shim.ChaincodeStubInterface, queryString string) ([]byte, error) {

    fmt.Printf("- getQueryResultForQueryString queryString:\n%s\n", queryString)

    resultsIterator, err := stub.GetQueryResult(queryString)
    if err != nil {
        return nil, err
    }
    defer resultsIterator.Close()

    buffer, err := constructQueryResponseFromIterator(resultsIterator)
    if err != nil {
        return nil, err
    }

    fmt.Printf("- getQueryResultForQueryString queryResult:\n%s\n", buffer.String())

    return buffer.Bytes(), nil
}

At дает следующий вывод:

Query Result: [{"Key":"marble1", "Record":{"color":"blue","docType":"marble","name":"marble1","owner":"tom","size":35}}]

Если бы я хотел использовать «tom» (владельца) в качестве входных данных для нового запроса, как я мог бы вместо того, чтобы возвращать результат запроса, использовать выходные данные в качестве входных аргументов?

1 Ответ

0 голосов
/ 13 июня 2019

Мне неясно, что вы подразумеваете под

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

Есть функция цепочки queryMarblesByOwner , но только при использовании couchdb.

peer chaincode query -C myc1 -n marbles -c '{"Args":["queryMarblesByOwner","tom"]}'

...