Как 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()