2017-10-14 84 views
0

我初学花好月圆,我试图做一个查询,有:“变量不存在”当我尝试做一个查询与外生

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

你在这个模块中有'import Ecto.Query'吗? – Dogbert

回答

1

我的猜测是,你在这个模块中失踪import Ecto.Query。没有这个,Ecto认为from是一个正常的函数,而不是宏,并开始检查参数是否有效。第一个参数是u in Like,其中desugars到Enum.member?(Like, u)Like是一个有效值,但没有名为u的变量,而Elixir会抛出该错误。添加

import Ecto.Query 

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

到模块将解决这个问题。

相关问题