2017-10-14 10 views
0

Je suis débutant dans Elixir, et je suis en train de faire une requête, avec:« Variable n'existe pas » quand je vais essayer de faire une requête avec Ecto

def posts_liked(%{id: id}, _info) do 
    query = from u in Like, where: u.user_id == ^id 
    {:ok, Repo.all(query)} 
end 

Mais, disent que la variable u n'existe pas. Mais, in oficial doc ont ce même code, et d'autres manuels aussi. Comment le réparer?

Mon schéma Like est:

schema "likes" do 
    belongs_to :post, Myapp.Post, foreign_key: :post_id 
    belongs_to :user, Myapp.User, foreign_key: :user_id 

    timestamps() 
end 
+0

Avez-vous 'importer Ecto.Query' dans ce module? – Dogbert

Répondre

1

Je pense que vous êtes absent import Ecto.Query dans ce module. Sans cela, Ecto pense que from est une fonction normale, pas une macro, et commence à vérifier que les arguments sont valides. Le premier argument est u in Like, qui désuge à Enum.member?(Like, u). Like est une valeur valide mais il n'y a aucune variable nommée u et Elixir renvoie cette erreur. Ajout

import Ecto.Query 

ou

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

au module résoudra ce problème.