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 个响应?