获取json值并将其存储在我的表中,并使用一些特定的模式

时间:2017-01-30 12:00:05

标签: elixir phoenix-framework ecto

如何获取特定的json值并将其存储在具有特定模式的表中。

例如我试过

def save_to_payment(conn,result) do
  Poison.decode!(result, as: %Payments.payment{} )
end

使用此架构,

schema "payment" do
  field :payment_id, :string
  field :state, :string
  field :amount, :decimal
  timestamps()
end

然而,实际的Json有很多字段,我只需要很少的字段..

我需要将我想要的字段映射到模式,以便将它们保存在数据库中

1 个答案:

答案 0 :(得分:1)

我只是将原始解码的Map传递给Payment.changeset/2并让它处理删除额外的字段并根据需要进行类型转换:

json = "{\"state\":\"CA\",\"payment_id\":1,\"go\":\"here\",\"extra\":\"fields\",\"amount\":123}"
decoded = Poison.decode!(json)
changeset = Payment.changeset(%Payment{}, decoded)
# You can now `Repo.insert!(changeset)` or use it in forms etc.