微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Hyperledger Fabric,golang 中的嵌套结果迭代器 - 如何?链码启动失败

如何解决Hyperledger Fabric,golang 中的嵌套结果迭代器 - 如何?链码启动失败

我已经定义了一个结构体

// 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 举报,一经查实,本站将立刻删除。