Как CRUD Postgres Point тип данных с помощью go pg

Я использую тип данных Point для хранения координат в Postgres DB. Как мне сопоставить тип данных Point с типами данных Go lang? Я не нахожу никакой документации для того же самого.

0 ответов

Go -pg не имеет встроенной поддержки типа Point (как в PostGIS). Что я сделал, чтобы обойти это (возможно, это не лучшее решение, но мне удалось заставить его работать), так это добавить в мою модель отдельные поля широты и долготы, а в самом запросе использоватьColumnExpr чтобы получить индивидуальные значения, используя ST_X (по долготе) и ST_Y (не забывайте о широте).

Модель:

type MyModel struct {
    ID              int64
    Name            string
    LocationLat     float64
    LocationLon     float64
}

Запрос:

err := db.Model(&myModel).
        Column("id", "name").
        ColumnExpr("ST_X(location) AS location_lon").
        ColumnExpr("ST_Y(location) AS location_lat").
        Where("id = ?", id).
        Select()
Другие вопросы по тегам