Dans mon application Phoenix, j'essaie d'insérer un enregistrement d'événement dans la base de données avec des champs pour start_time
et end_time
- les données datetime seront déjà converties en format de chaîne ISO sur le client et transmis à l'API Phoenix en tant que données JSON, mais cela me cause quelques problèmes quand j'essaye de faire un insert - le modèle attend que ces valeurs soient :utc_datetime
alors j'ai besoin de les convertir - j'ai lu la documentation, mais je ne suis toujours pas sûr ...Phoenix/Ecto - convertir une chaîne ISO en type primitif utc_datetime
Tout d'abord, voici le schéma pour le modèle:
@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
données JSON du client ressemblerait à ceci:
{
"start_time": "2017-09-28T18:31:32.223Z",
"end_time": "2017-09-28T19:31:32.223Z",
"description": "Test insert"
}
Et si je devais (à tort) essayer d'insérer ces données en l'état, la déclaration ressemblerait à ceci:
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"})
Comme prévu , cela génère une erreur que mes données datetime does not match type :utc_datetime
. Ok, c'est cool, mais ma question est, avec les données déjà dans la chaîne ISO, comment puis-je le convertir en Elixir/Ecto le reconnaît comme valide :utc_datetime
?