如何检查数据库中是否存在ID?
def get_user!(id), do: Repo.get!(User, id)
get_user!(id)
可以用来获取用户,有没有办法检查id是否存在?
我想要下面的内容会返回true。
MyApp.Accounts.get_user!(user_id) == %MyApp.Accounts.User{id: user_id}
答案 0 :(得分:4)
Ecto v3支持Ecto.Repo.exists?/2
import Ecto.Query, only: [from: 2]
Repo.exists?(from u in User, where: u.id == ^user_id)
答案 1 :(得分:3)
Repo.get!
会抛出错误。
您可能希望使用Repo.get
代替
Repo.get(User, user_id) != nil
您还可以定义一个函数来检查是否存在给定用户ID
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