Я пытаюсь решить следующее (это возвращаемое значение моей функции распознавателя, и я передаю его макросу resolve
):
{:ok,
%{
collection: nil,
errors: %{
recoverable: [
%{
__exception__: true,
__recoverable__: true,
message: %{
color: %{
exterior: ["is invalid"],
interior: ["is invalid"]
}
},
type: :vehicle_invalid
}
],
unrecoverable: []
}
}}
Это возвращает эту классическую ошибку:
** (Protocol.UndefinedError) protocol String.Chars not implemented for %{color: %{exterior: ["is invalid"], interior: ["is invalid"]}} of type Map. This protocol is implemented for the following type(s): Money, Postgrex.Copy, Postgrex.Query, Floki.Selector.AttributeSelector, Floki.Selector, Floki.Selector.Functional, Floki.Selector.Combinator, Floki.Selector.PseudoClass, Decimal, Float, DateTime, Time, List, Version.Requirement, Atom, Integer, Version, Date, BitString, NaiveDateTime, URI
который я получаю, он не знает, как преобразовать карту в строку, но это приводит к моему фактическому вопросу:
Мне интересно, почему карта верхнего уровня errors
может быть проанализирована нормально, но не вложенная карта messages
, хотелось бы получить некоторые советы, спасибо!
Примечание. Наш шаблон заключается в том, чтобы ошибки проверки в стиле Ecto возвращались с нашими собственными данными, а не с ошибками запроса Graph верхнего уровня, поэтому кортеж :ok вместо разрешения кортежа :error
schema.ex
функция, которая выглядит так:defp apply(middleware, :errors, _field, _) do
? - person Peaceful James   schedule 11.08.2020