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

问题描述 投票:1回答:2
  • 如何检查数据库中是否存在id? def get_user!(id), do: Repo.get!(User, id)
  • get_user!(id)可以用来获取用户,有没有办法检查id是否存在?
  • 我想要像下面这样会返回真实的东西。 MyApp.Accounts.get_user!(user_id) == %MyApp.Accounts.User{id: user_id}
phoenix-framework ecto
2个回答
4
投票

Ecto v3通过Ecto.Repo.exists?/2支持此功能

import Ecto.Query, only: [from: 2]

Repo.exists?(from u in User, where: u.id == ^user_id)

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
© www.soinside.com 2019 - 2024. All rights reserved.