当我尝试使用Ecto进行查询时,“变量不存在”

时间:2017-10-14 05:53:57

标签: elixir ecto

我是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

1 个答案:

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

到该模块将解决此问题。