如何使用go pg CRUD Postgres Point数据类型

时间:2019-05-20 07:09:43

标签: postgresql go go-pg

我正在使用Point数据类型在Postgres DB中存储坐标。如何将Point数据类型映射到Go lang数据类型?我找不到相同的任何文档。

1 个答案:

答案 0 :(得分: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()