如何使用querystring中的输出参数作为输入?

时间:2019-06-12 13:22:24

标签: couchdb hyperledger-fabric

更新:我已经按照自己的目的自定义了Marble链码,我想在此通过生产系统跟踪产品。因此,在每个制造工序中,将记录一个新的事务,其中前一个工序的传出ID将成为该工作站的传入ID。现在,我可以通过outgoingID进行查询,并查看所有已变为outgoingID的ingoingID。但这仅适用于一项操作。因此,要将这些不同的ID链接在一起,我想将查询的结果ID用作新查询的输入。

我正在尝试从Build Your First network中的输出查询字符串访问参数。

代码如下:

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 :(得分:0)

我不清楚您是什么意思

  

不是返回查询结果,而是使用输出作为输入参数

queryMarblesByOwner chaincode function,但只有在使用ouchdb的情况下。

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