gpt4 book ai didi

Elixir 模式匹配 ecto 错误

转载 作者:行者123 更新时间:2023-12-02 02:28:27 26 4
gpt4 key购买 nike

当插入未满足数据库级别约束时,我依靠 Ecto 返回错误。

是否可以根据 Ecto 返回的错误类型运行不同的代码?

case Repo.insert(changeset) do
{:ok, _} ->
IO.puts("inserted")
{:error, message} when is_certain_ecto_error ->
IO.puts("database constraint error")
{:error, message} ->
IO.puts("everything else error")
end

最佳答案

就像 Justin 所说,您将得到 {:error,changeset},变更集将具有 errors 关键字列表,您可以在其中进行模式匹配。

case Repo.insert(changeset) do
{:ok, _} ->
IO.puts("inserted")
{:error, %{ errors: errors }} ->
Enum.map(errors, &handle_error(&1))
end

defp handle_error({:user_name, {message, _}}) do
"User name error:" <> message
end
defp handle_error({_some_key, _error_tuple}), do: "some error"

关于Elixir 模式匹配 ecto 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45107621/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com