2017-10-14 164 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] 

到模塊將解決這個問題。

相關問題