elixir - 在phoenix中查询时出现Ecto.Query.CastError
问题描述
所以我复制了一个查询,它将预加载其中关联的用户。
问题是它抛出了ecto.query.cast错误,我似乎找不到解决方案。
询问
def get_avatar!(id) do
IO.inspect(id)
query =
from(
p in AssocApp.Accounts.Avatar,
where: p.user_id == ^id,
select: p,
preload: [:user]
)
Repo.get!(Avatar, query)
end
用户模式
schema "users" do
field(:password, :string)
field(:username, :string)
has_one(:avatar, AssocApp.Accounts.Avatar)
timestamps()end
化身模式
schema "avatars" do
field(:firstname, :string)
field(:lastname, :string)
field(:pic_url, :string)
belongs_to(:user, AssocApp.Accounts.User)
timestamps()end
@doc false
def changeset(avatar, attrs) do
avatar
|> cast(attrs, [:firstname, :lastname, :pic_url, :user_id])
# |> validate_required([:firstname, :lastname, :pic_url])end
化身控制器
def show(conn, %{"id" => id}) do
avatar = Accounts.get_avatar!(id)
render(conn, "show.json", avatar: avatar)end
截屏:
解决方案
Repo.get!/2
通过其主键获取记录,但您将查询传递给它。您需要使用Repo.one!/1
:
Repo.one!(query)
推荐阅读
- web-services - 连接多个具有相同对象类型的 Web 服务
- java - 如何从两个 Jtextfield 计算数字?
- c++ - 将复选框信号连接到 qt 小部件中的方法
- c# - 为什么序列等于列表
捕捉错误? - c# - 项目的 Nuget 包管理器失败,找不到包 'Microsoft.AspNet.Mvc 的 5.2.6 版
- python - time.sleep 不适用于范围或列表中的每个项目
- node.js - 处理批处理请求时遇到数据库问题
- excel - 如何在 MS EXCEL VBA 的非活动工作表中引用 UsedRange
- json - 对象未被识别为 JSON 对象
- r - mlogit 给出错误:这两个索引没有定义唯一的观察结果