func (t *basicInfo) queryAll(stub shim.ChaincodeStubInterface, args []string) pb.Response{ if(len(args)!=1){ return shim.Error("except one arg") } resultsIterator,err:= stub.GetHistoryForKey(args[0]) if err!=nil{ return shim.Error(err.Error()) } defer resultsIterator.Close() var buffer bytes.Buffer buffer.WriteString("[") bArrayMemberAlreadyWritten := false for resultsIterator.HasNext() { response, err := resultsIterator.Next() if err != nil { return shim.Error(err.Error()) } if bArrayMemberAlreadyWritten == true { buffer.WriteString(",") } buffer.WriteString("{\"TID\":") buffer.WriteString("\"") buffer.WriteString(response.TxId) buffer.WriteString("\"") buffer.WriteString(", \"THistory\":") if response.IsDelete { buffer.WriteString("null") } else { buffer.WriteString(string(response.Value)) } buffer.WriteString(", \"TTime\":") 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 } buffer.WriteString("]") return shim.Success(buffer.Bytes()) }
时间: 2023-07-05 19:05:19 浏览: 52
这是一个基于 Hyperledger Fabric 的智能合约中的一个函数,用于查询某个 key 的历史记录。在这个函数中,首先检查参数是否为一个,如果不是则返回错误信息。然后调用 `stub.GetHistoryForKey(args[0])` 函数获取 key 的历史记录迭代器。接着遍历历史记录迭代器,使用 `bytes.Buffer` 缓存查询结果,并将查询结果转换为 JSON 格式返回。最后,返回查询结果的字节数组。
阅读全文