Ecto.Repo检查数据库中是否存在id,Phoenix框架

时间:2018-06-05 10:04:32

标签: phoenix-framework ecto

  • 如何检查数据库中是否存在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}

2 个答案:

答案 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