小编Vla*_*sky的帖子

长生不老药 UUID。UUID不匹配时如何处理500错误

def show(conn, %{"id" => id}) do
  with {:ok, user} <- UserAction.get_user(id)
    |> put_status(200)
    |> render("show.json", %{user: user})
  else
    {:error, :not_found} -> {:error, :not_found, %User{id: id}}
  end
end
Run Code Online (Sandbox Code Playgroud)

当 id 无效时,Ecto引发:

Ecto.Query.CastError - cannot be dumped to type :binary_id in query. 
Run Code Online (Sandbox Code Playgroud)

我的get_user功能:

query = from(u in User, where u.id == ^id)

case Repo.all(query) do
  [%User{} = user] -> {:ok, user}
  _ -> {:error, :not_found}
end
Run Code Online (Sandbox Code Playgroud)

是否有任何方便的方法来处理此错误以防止 500 个响应?

postgresql uuid elixir phoenix-framework

5
推荐指数
2
解决办法
1513
查看次数

标签 统计

elixir ×1

phoenix-framework ×1

postgresql ×1

uuid ×1