如何使用 Postgres 使用 Ecto 存储数组
How to store array with Ecto using Postgres
我想使用 Postgres 使用 Ecto 存储一个浮点值数组。
我将 Ecto 与 Phoenix Framework 和 Elixir 一起使用。
我将如何为此定义我的模型和迁移?
我没有尝试太多,除了在网上搜索,没有找到任何有用的东西:-(
我确实尝试用这样的模式定义模型:
schema "my_model" do
field :my_array, :array
timestamps
end
报错"invalid or unknown type :array for field :my_array"
我在 Ecto.Schema 的原始类型列表中找到了答案:
答案是这样定义类型:
schema "my_model" do
field :my_array, {:array, :float}
timestamps
end
正如 Josh 所写,使用 Ecto.Schema
中的数组类型
模型中:
schema "my_model" do
field :my_array, {:array, inner_type}
end
@neildaemond 迁移:
alter table(:my_models) do
add :my_array, {:array, inner_type}
end
将 inner_type
替换为一种有效类型,例如 :string
.
你也可以用 map
类型做同样的事情:
schema "my_model" do
field :my_map, {:map, inner_type}
end
我想使用 Postgres 使用 Ecto 存储一个浮点值数组。 我将 Ecto 与 Phoenix Framework 和 Elixir 一起使用。
我将如何为此定义我的模型和迁移?
我没有尝试太多,除了在网上搜索,没有找到任何有用的东西:-(
我确实尝试用这样的模式定义模型:
schema "my_model" do
field :my_array, :array
timestamps
end
报错"invalid or unknown type :array for field :my_array"
我在 Ecto.Schema 的原始类型列表中找到了答案:
答案是这样定义类型:
schema "my_model" do
field :my_array, {:array, :float}
timestamps
end
正如 Josh 所写,使用 Ecto.Schema
中的数组类型模型中:
schema "my_model" do
field :my_array, {:array, inner_type}
end
@neildaemond 迁移:
alter table(:my_models) do
add :my_array, {:array, inner_type}
end
将 inner_type
替换为一种有效类型,例如 :string
.
你也可以用 map
类型做同样的事情:
schema "my_model" do
field :my_map, {:map, inner_type}
end