如何使用 PostgreSQL 在 Ecto 中使用点列类型
How to use point column type in Ecto using PostgreSQL
我可以看到 Postgrex
库支持 postgreSQL 的 point
类型,但我不知道如何在模型中使用它。我可以在迁移中为列指定 point
类型,但是当我在模型中这样指定它时:
schema "something" do
field :position, :point
end
我得到 ** (ArgumentError) invalid or unknown type :point for field :position
。我应该做些什么才能让它发挥作用?
Ecto 不包含 PostgreSQL 中 point
数据类型的任何 Ecto.Type
实现模块。您可以使用 Ecto.Type
行为定义自己的模块,也可以使用像 geo
which includes Geo.Point
which implements the Ecto.Type
behavior.
这样的库
使用 geo
,您的架构将类似于:
schema "something" do
field :position, Geo.Point
end
geo
库已将所有与 Ecto 相关的代码移至单独的库 (see related pull request here)。
要使用 PostgreSQL point
数据类型的 Ecto.Type
实现,请使用 geo_postgis
库。
我可以看到 Postgrex
库支持 postgreSQL 的 point
类型,但我不知道如何在模型中使用它。我可以在迁移中为列指定 point
类型,但是当我在模型中这样指定它时:
schema "something" do
field :position, :point
end
我得到 ** (ArgumentError) invalid or unknown type :point for field :position
。我应该做些什么才能让它发挥作用?
Ecto 不包含 PostgreSQL 中 point
数据类型的任何 Ecto.Type
实现模块。您可以使用 Ecto.Type
行为定义自己的模块,也可以使用像 geo
which includes Geo.Point
which implements the Ecto.Type
behavior.
使用 geo
,您的架构将类似于:
schema "something" do
field :position, Geo.Point
end
geo
库已将所有与 Ecto 相关的代码移至单独的库 (see related pull request here)。
要使用 PostgreSQL point
数据类型的 Ecto.Type
实现,请使用 geo_postgis
库。