检索超级账本完整的世界状态
retrieving hyperledger complete world state
是否有链代码填充函数,我可以使用它在 Hyperledger Fabric 链代码中检索世界状态的所有键(可能包括值)?
可以使用 stub.GetStateByRange()
函数遍历特定链代码的链代码状态中的所有键。
例如:
keysIter, err := stub.GetStateByRange(startKey, endKey)
if err != nil {
return shim.Error(fmt.Sprintf("keys operation failed. Error accessing state: %s", err))
}
defer keysIter.Close()
var keys []string
for keysIter.HasNext() {
key, _, iterErr := keysIter.Next()
if iterErr != nil {
return shim.Error(fmt.Sprintf("keys operation failed. Error accessing state: %s", err))
}
keys = append(keys, key)
}
在 Hyperledger fabric 存储库
中查看完整的 chaincode
在链码APIGetStateByRange(startKey, endKey string)中,startKey和endKey可以为空字符串,这意味着在开始或结束时进行无限范围查询。将它们都保留为空字符串以获得完整的 key/values 集合。
是否有链代码填充函数,我可以使用它在 Hyperledger Fabric 链代码中检索世界状态的所有键(可能包括值)?
可以使用 stub.GetStateByRange()
函数遍历特定链代码的链代码状态中的所有键。
例如:
keysIter, err := stub.GetStateByRange(startKey, endKey)
if err != nil {
return shim.Error(fmt.Sprintf("keys operation failed. Error accessing state: %s", err))
}
defer keysIter.Close()
var keys []string
for keysIter.HasNext() {
key, _, iterErr := keysIter.Next()
if iterErr != nil {
return shim.Error(fmt.Sprintf("keys operation failed. Error accessing state: %s", err))
}
keys = append(keys, key)
}
在 Hyperledger fabric 存储库
中查看完整的 chaincode在链码APIGetStateByRange(startKey, endKey string)中,startKey和endKey可以为空字符串,这意味着在开始或结束时进行无限范围查询。将它们都保留为空字符串以获得完整的 key/values 集合。