2017-02-28 72 views

回答

2

使用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织物回购

+2

我正在查看文档:https://godoc.org/github.com/hyperledger/fabric/core/chaincode/shim#ChaincodeStub.GetStateByRange。词汇顺序意味着我应该去从“a”到“ZZZZZZZZZZZZZZZZZ”(取决于键的最大长度)的所有键? –

+1

@FooL是正确的 – cjcroix

0

在chaincode API GetStateByRange(startKey,endKey字符串)完整chaincode,所述startKey和endKey可以为空字符串,这意味着无界范围查询开始或结束。将它们留作空字符串以获取返回的全套键/值。