0

我已经定义了一个像

// 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
}
4

0 回答 0