无法在Hyperledger Fabric Chaincode上的GetQueryResult(queryString)之后立即调用GetState

时间:2018-10-24 14:18:44

标签: go hyperledger-fabric

在我的Fabric Golang链码上,我需要找到一个对象列表,然后循环并在分类账上的其他对象上调用getState()。它适用于GetStateByRange(),但不适用于GetQueryResult()。这些都是来自shim.ChaincodeStubInterface

在每个GetQueryResult()之后,使用getState()会得到“未检测到修订标签”

示例:

这行得通!

func (s *SmartContract) queryAllFormations(APIstub shim.ChaincodeStubInterface, args []string) sc.Response {

                resultsIterator, _ := APIstub.GetStateByRange("FORM_1","FORM_99")
                for resultsIterator.HasNext() {
                    var formation Formation
                    json.Unmarshal(formationAsBytes.Value, &formation)
                    formationAsBytes, _:= resultsIterator.Next()
                    // Will succeed !
                    personAsBytes, _:= APIstub.GetState(formation.PersonID)
                    [...]
                 }
                 resultsIterator.Close()

这将失败!

func (s *SmartContract) queryAllFormations(APIstub shim.ChaincodeStubInterface, args []string) sc.Response {
            queryString := ...
            resultsIterator, _ := APIstub.GetQueryResult(queryString)
            for resultsIterator.HasNext() {
                formationAsBytes, _:= resultsIterator.Next()
                var formation Formation
                json.Unmarshal(formationAsBytes.Value, &formation)
                // WILL fail
                personAsBytes, _:= APIstub.GetState(formation.PersonID)
                [...]
            }
            resultsIterator.Close()
  

错误:[client-utils.js]:sendPeersProposal-承诺被拒绝:   错误:GET_STATE失败:交易ID:   2117b32cc69873be0e752eb644250c4156f29d9ec48d385f88d43ca1705b909d:否   检测到修订标签       在/home/apa/DEV/rinku/rinku-server/node_modules/fabric-client/lib/Peer.js:114:16       在/home/apa/DEV/rinku/rinku-server/node_modules/fabric-client/node_modules/grpc/src/client.js:586:7

有什么主意吗?预先感谢

1 个答案:

答案 0 :(得分:0)

随着@DaveEnYeart消失,我的一些ID为空。