问题描述
我已经定义了一个结构体
// HistoryQueryResult structure used for returning result of history query
type BookingHistoryQueryResult struct {
CarRecord *Car `json:"record"`
BookingRecord *Booking `json:"record"`
TxId string `json:"txId"`
Timestamp time.Time `json:"timestamp"`
}
我正在尝试如下迭代
// QueryHistoryBooking returns all bookings found in world state
func (s *SmartContract) GetBookingHistory(ctx contractapi.TransactionContextInterface,carNumber string) ([]BookingHistoryQueryResult,error) {
var historyResults []BookingHistoryQueryResult
var carKey string
queryString := fmt.Sprintf("{\"selector\":{\"docType\":\"booking\",\"carNumber\":\"%s\"}}",carNumber)
queryBookingresultsIterator,err := ctx.GetStub().GetQueryResult(queryString)
if err != nil {
return nil,err
}
for queryBookingresultsIterator.HasNext() {
queryResponse,err := queryBookingresultsIterator.Next()
if err != nil {
return nil,err
}
bookingId := queryResponse.Key
resultsIterator,err := ctx.GetStub().GetHistoryForKey(bookingId)
for resultsIterator.HasNext() {
queryHistoryResponse,err := resultsIterator.Next()
if err != nil {
return nil,err
}
booking := new(Booking)
_ = json.Unmarshal(queryResponse.Value,booking)
timestamp,err := ptypes.Timestamp(queryHistoryResponse.Timestamp)
if err != nil {
return nil,err
}
// This is the portion that is causing the trouble
carKey = booking.CarNumber
car,err := s.QueryCar(ctx,carKey)
if err != nil {
return nil,err
}
historyResult := BookingHistoryQueryResult{
TxId: queryHistoryResponse.TxId,Timestamp: timestamp,BookingRecord: booking,CarRecord: car,}
historyResults = append(historyResults,historyResult)
}
}
return historyResults,nil
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)