更新:我已经按照自己的目的自定义了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”(所有者)作为新查询的输入,那么如何代替输出结果作为输入参数而不是返回查询结果呢?
答案 0 :(得分:0)
我不清楚您是什么意思
不是返回查询结果,而是使用输出作为输入参数
有queryMarblesByOwner chaincode function,但只有在使用ouchdb的情况下。
peer chaincode query -C myc1 -n marbles -c '{"Args":["queryMarblesByOwner","tom"]}'