Reputation: 396
How do I check if an id exists in the database?
def get_user!(id), do: Repo.get!(User, id)
get_user!(id)
can be used to get the user, is there a way to check if id exists?
I want something like below which would return true.
MyApp.Accounts.get_user!(user_id) == %MyApp.Accounts.User{id: user_id}
Upvotes: 6
Views: 6302
Reputation: 59607
Ecto v3 supports this with Ecto.Repo.exists?/2
import Ecto.Query, only: [from: 2]
Repo.exists?(from u in User, where: u.id == ^user_id)
Upvotes: 14
Reputation: 1082
Repo.get!
throws an error if no record is found.
You might want to use Repo.get
instead like
Repo.get(User, user_id) != nil
You can also define a function to check if a give user id exists
def user_exist_by_id(user_id)do
#select just id to reduce payload
query = (from u in User, where: u.id == ^user_id, select: %{id: u.id})
found = Repo.one(query)
#if not result, found will be nil
found != nil
end
Upvotes: 3