在我的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
有什么主意吗?预先感谢
答案 0 :(得分:0)
随着@DaveEnYeart消失,我的一些ID为空。