Beego QueryRows карта не удалась - PullRequest
0 голосов
/ 06 июля 2018

каково правило отображения beego Raw().QueryRows() это структура, которую я использовал:

type ProcessingNetworkDataProviderConfig struct {
    Id                     int
    NetworkId              int
    DataProviderId         int
    DistributorId          int
    EnableTargeting        int
    EnableReporting        int
    UsePrivateData         int
    UseExternalUserId      int
    UseUserMapping         int
    UseUserAttributes      int
    UserExchangeUrl        string
    EnableCache            int
    EnableBloomFilter      int
    EnableDisplayAds       int
    EnableResellerMode     int
    EnableVisitorReporting int
    Nsql                   string
    MaxSegmentNumber       int
    ExpirationDays         int
    DeltaIngest            int
    Pkg                    int
    Trackednum             int
    Comment                string
    ProcessingStatus       string
}

и это таблица в MySQL (desc processing_network_data_provider_config):

+--------------------------+---------------+------+-----+---------+----------------+
| Field                    | Type          | Null | Key | Default | Extra          |
+--------------------------+---------------+------+-----+---------+----------------+
| id                       | bigint(20)    | NO   | PRI | NULL    | auto_increment |
| network_id               | bigint(20)    | NO   | MUL | NULL    |                |
| data_provider_id         | bigint(20)    | NO   | MUL | NULL    |                |
| distributor_id           | bigint(20)    | YES  | MUL | NULL    |                |
| enable_targeting         | tinyint(1)    | NO   |     | 0       |                |
| enable_reporting         | tinyint(1)    | NO   |     | 0       |                |
| use_private_data         | tinyint(1)    | NO   |     | 0       |                |
| use_external_user_id     | tinyint(1)    | NO   |     | 0       |                |
| use_user_mapping         | tinyint(1)    | NO   |     | 0       |                |
| use_user_attributes      | tinyint(1)    | NO   |     | 1       |                |
| user_exchange_url        | varchar(255)  | YES  |     | NULL    |                |
| enable_cache             | tinyint(1)    | NO   |     | 1       |                |
| enable_bloom_filter      | tinyint(1)    | NO   |     | 0       |                |
| enable_display_ads       | tinyint(1)    | NO   |     | 1       |                |
| enable_reseller_mode     | tinyint(1)    | NO   |     | 0       |                |
| enable_visitor_reporting | tinyint(1)    | NO   |     | 1       |                |
| Nsql                     | varchar(2000) | YES  |     | NULL    |                |
| seg_num                  | int(11)       | YES  |     | NULL    |                |
| exp_date                 | int(11)       | YES  |     | NULL    |                |
| delta_ingest             | tinyint(1)    | YES  |     | NULL    |                |
| package                  | tinyint(1)    | YES  |     | NULL    |                |
| tracked_num              | int(11)       | YES  |     | NULL    |                |
| Comment                  | varchar(2000) | YES  |     | NULL    |                |
| ProcessingStatus         | varchar(30)   | YES  |     | NULL    |                |
+--------------------------+---------------+------+-----+---------+----------------+

Я использовал это, чтобы прочитать базу данных:

var tt []*ProcessingNetworkDataProviderConfig
sql := `SELECT * FROM processing_network_data_provider_config`
if _, err := o.Raw(sql).QueryRows(&tt); err != nil {
    fmt.Println("fff wo")
    beego.Error("Error when querying network configuration: ", err.Error())
}
fmt.Println(tt[0])

и вывод был:

&{49 1271 1 -1 1 0 0 0 0 1 1 1 1 1 1 1  0 0 0 0 0  }

Однако в этом должна быть какая-то строка, где они? Я предполагаю, что это правило отображения делает его неудачным, я прав?

1 Ответ

0 голосов
/ 06 июля 2018

https://beego.me/docs/mvc/model/models.md
Исходя из соглашения об именах, ваше имя структурного поля будет преобразовано в snake_case для использования в вашей схеме БД, и я заметил ваш «ProcessingStatus» в схеме. Поэтому я считаю, что у вас есть 2 варианта:
1. Переименуйте столбец «ProcessingStatus» в snake_case
2. Используйте специальное сопоставление со своим тегом struct:

ProcessingStatus string `orm:"column(processing_status)"
...