2016-09-15 4 views
1

クライアントは、次のJSONを送信します:{ "ユーザー":{ "年齢+":18、 "年齢 - ":40}}私のコントローラでEctoクエリのJSONで値を渡すには?

私は、次のしている:

def procura(conn, query) do 
    maior = conn.params["user"]["age+"] 
    menor = conn.params["user"]["age-"] 
query = from u in query, where: u.age > ^maior and u.age < ^menor, select: u.name 
    pesquisa = Repo.all query 
    IO.puts pesquisa 
end 

しかし、私コンパイラ警告を受け取りました:** (Protocol.UndefinedError) protocol Ecto.Queryable not implemented for %{}

Ectoクエリ用にJSONの値を渡すにはどうすればよいですか?

私の目標は、JSONフィールドに基づいてクエリを実行することです。 x年とy年との間にいるユーザーを検索したい 自動的に翻訳されました。

+1

クエリの値は何ですか?あなたは '%{}'をクエリの代わりに 'procura'の第2引数として渡しているようです。また、 'from'行を' query = from u in query、... 'に変更する必要があります。 – Dogbert

+0

procuraはアクションですか? yesの場合、queryパラメータは要求からスクラブされます。 Plsは結果としてshowでクエリのIO.inspectを試します。地図でなければなりません。アクションの場合は、接続を返す必要があります。 – Haito

+0

こんにちは!私の目標は、JSONフィールドに基づいて検索を行うことです。 x年とy年との間にいるユーザーを検索したい。私は得られない。 –

答えて

2

何をしたかったかもしれないです:私のコントローラで

は、私は以下の持っている:

def procura(conn, %{"user" => %{ "idade+" => maior, "idade-" => menor }}) do 
    query = from u in Module.Model, where: u.idade > ^maior and u.idade < ^menor, select: u.name 
    pesquisa = Repo.all query 
    IO.puts pesquisa 
    text conn, "Works" 
end 
関連する問題