2017-02-28 44 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可以爲空字符串,這意味着無界範圍查詢開始或結束。將它們留作空字符串以獲取返回的全套鍵/值。