stub.gethistorykeys()报告GethistoryKeys()函数不确定.当尝试时,请在我的链代码上构建



我是Hyperledger的新手。我是使用Docker运行HyperLeDger。从Docker Hub中拉出hyperledger/fabric-peer:latest,能够运行stub.CreateTable()stub.GetRows()stub.InsertRows()以及我的链代码中的其他一些功能。但是当我尝试运行

我的链代码中的 stub.GetHistoryKeys() or stub.GetCompositeKeys() ...etc它报告了一个错误

 stub.GetHistoryForKey undefined (type shim.ChaincodeStubInterface has no field 
  or method GetHistoryForKey)

我在我的interface.go文件中发现没有这样的功能。谷歌搜索了很多,但什么也没发现。任何人都可以告诉正确的hyperledger/fabric-peer图像要拉动,以便上述功能可以在链中运行。

请下载最新版本的织物图像((HyperLedger/Fabric-Peer X86_64-1.1.0(。它可以从HyperLeDger官方网站上提到的脚本下载(安装二进制(=>(https://hyhyperledger-fabric.readthedocs.io/en/latest/install.html。由于stackover Flow Policy问题而无法粘贴URL(。一旦有了它。创建一个GO代码。只需在一个键上添加一个JSON记录,然后尝试添加一些更改的JSON字段,然后再次添加到同一键。完成此操作后,请发射以下代码以备态:=>

func(s *smartContract(getAllTranSactionForId(apistub shim.chaincodestubinterface,args [] string(sc.Response { fmt.println(" getallTransactionFornumber称"( id:= args [0]

resultsIterator, err := APIstub.GetHistoryForKey(id)
if err != nil {
    return shim.Error(err.Error())
}
defer resultsIterator.Close()
// buffer is a JSON array containing historic values for the number
var buffer bytes.Buffer
buffer.WriteString("[")
bArrayMemberAlreadyWritten := false
for resultsIterator.HasNext() {
    response, err := resultsIterator.Next()
    if err != nil {
        return shim.Error(err.Error())
    }
    // Add a comma before array members, suppress it for the first array member
    if bArrayMemberAlreadyWritten == true {
        buffer.WriteString(",")
    }
    buffer.WriteString("{"TxId":")
    buffer.WriteString(""")
    buffer.WriteString(response.TxId)
    buffer.WriteString(""")
    buffer.WriteString(", "Value":")
    // if it was a delete operation on given key, then we need to set the
    //corresponding value null. Else, we will write the response.Value
    //as-is (as the Value itself a JSON marble)
    if response.IsDelete {
        buffer.WriteString("null")
    } else {
        buffer.WriteString(string(response.Value))
    }
    buffer.WriteString(", "Timestamp":")
    buffer.WriteString(""")
    buffer.WriteString(time.Unix(response.Timestamp.Seconds, int64(response.Timestamp.Nanos)).String())
    buffer.WriteString(""")
    buffer.WriteString(", "IsDelete":")
    buffer.WriteString(""")
    buffer.WriteString(strconv.FormatBool(response.IsDelete))
    buffer.WriteString(""")
    buffer.WriteString("}")
    bArrayMemberAlreadyWritten = true
}
if !bArrayMemberAlreadyWritten {
    buffer.WriteString("No record found")
}
buffer.WriteString("]")
fmt.Printf("- getAllTransactionForNumber returning:n%sn", buffer.String())
return shim.Success(buffer.Bytes())

}

如果仍然有疑问,请恢复。我会给您整个源代码以使其正常工作。但我希望这会使您的问题消失: - (

最后,我能够弄清楚它以获取HyperLeDger图像以支持我的链代码。

最新更新