Идентификаторы записи Голанга - 0 - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть следующие модели Car и cars slice:

type Car struct {
    ID     int    `json:"id"`
    Name  string `json:"title"`
}

var cars []Car

В базе данных Postgres я создал таблицу cars для сохранения car records.

create table cars (id serial, name varchar);

И сохранено пару автомобилей записей:

insert into cars (name) values ('Toyota');
insert into cars (name) values ('Lexus');

Записи успешно созданы с инкрементными целочисленными идентификаторами 1 и 2.

На моем сервере Go я делаю следующий запрос для получения записей об автомобиле:

db.Query("SELECT * from cars").Rows(&cars)

for _, car := range cars {
    fmt.Println(car)
}

Несмотря на то, что есть ответ, идентификатор для каждой записи имеет значение 0. Я пытался выяснить, почему, но я не смог. У кого-нибудь есть идеи?

1 Ответ

0 голосов
/ 01 сентября 2018
Пакет

database/sql не обеспечивает сканирование данных непосредственно в структуру, вы должны выполнить итерацию по строкам, возвращенным из запроса к базе данных, а затем отсканировать данные в структуру как:

var cars []cars
for rows.Next() {
        var car cars
        err = rows.Scan(&c.ID, &c.Name)
        if err != nil {
                log.Fatalf("Scan: %v", err)
        }
        cars = append(cars, car)
}
fmt.Println(cars)

Или вы можете использовать расширение для имени пакета sql sqlx , которое предоставит вам возможность непосредственно сканировать результат во фрагмент структуры как:

cars := []cars{}
db.Select(&cars, "SELECT * from cars")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...