我是Elixir的初学者,我正在尝试使用:
进行查询def posts_liked(%{id: id}, _info) do
query = from u in Like, where: u.user_id == ^id
{:ok, Repo.all(query)}
end
但是,说变量u
不存在。但是,in oficial doc也有相同的代码和其他手册。如何解决?
我的Like
计划是:
schema "likes" do
belongs_to :post, Myapp.Post, foreign_key: :post_id
belongs_to :user, Myapp.User, foreign_key: :user_id
timestamps()
end
答案 0 :(得分:2)
我的猜测是你在这个模块中缺少import Ecto.Query
。没有它,Ecto认为from
是一个普通函数,而不是一个宏,并开始检查参数是否有效。第一个参数是u in Like
,它去了Enum.member?(Like, u)
。 Like
是有效值,但没有名为u
的变量,Elixir会抛出该错误。添加
import Ecto.Query
或
import Ecto.Query, only: [from: 2]
到该模块将解决此问题。