Phoenixアプリケーションで、start_time
およびのフィールドを持つデータベースにイベントレコードを挿入しようとしています。datetimeデータはすでにISO文字列形式に変換されていますJSONデータとしてPhoenix APIに渡されましたが、挿入しようとするといくつかの問題が発生します。これらの値は:utc_datetime
であると予測していますので、変換する必要があります。私はまだわからないんだけど...Phoenix/Ecto - ISO文字列をutc_datetimeプリミティブ型に変換する
まず第一に、ここではモデルのスキーマです:
@primary_key {:id, :string, []}
@derive {Phoenix.Param, key: :id}
schema "calendar_event" do
field :start_time, :utc_datetime
field :end_time, :utc_datetime
field :description, :string
timestamps()
end
クライアントからの
JSONデータは次のようになります。予想通り
MyApp.Repo.insert(%MyApp.CalendarEvent{id: "calendar_event:test1", start_time:
"2017-09-28T18:31:32.223Z", end_time: "2017-09-28T19:31:32.223Z",
description: "Test insert"})
:
{
"start_time": "2017-09-28T18:31:32.223Z",
"end_time": "2017-09-28T19:31:32.223Z",
"description": "Test insert"
}
そして、私がした場合(誤っ) - であるとして、このデータを挿入しようと、声明は次のようになります。これは、私の日時データdoes not match type :utc_datetime
がエラーをスローします。さて、それは素晴らしいですが、私の質問は、すでにISO文字列のデータで、どのように私はそれをElixir/Ectoが有効な:utc_datetime
と認識するように変換できますか?