在Enum.reduce中选择Merge不按预期工作

时间:2018-05-29 04:26:25

标签: elixir ecto

这些是参数:

 %{"$select" => %{"$avg" => ["arrive_at"], "$count" => ["arrive_at"]}}

这是代码:

 Enum.reduce(select, [], fn {key, value}, fields ->
              Enum.reduce(value, fields, fn {k, v}, fields ->
                query = from p in model, select: %{}
                query = if k == "$avg" do
                  from p in query, select_merge: %{avg: avg(p.id)}
                else
                  query
                end
                IO.inspect query

                   query = if k == "$count" do
                     from p in query, select_merge: %{count: count(p.pass)}
                   else
                    query
                   end

首先,此代码将运行" $ avg"并且此查询将返回

  #Ecto.Query<from m in Model, select: %{avg: avg(m.id)}>  

第二次运行&#34; $ count&#34;。由于此代码query = from p in model, select: %{} .它将再次重置为空的选择地图,而我得到的结果是:

    #Ecto.Query<from m in Model, select: %{count: count(m.pass)}>

返回最后一个查询的结果。我想要的是这个:

 #Ecto.Query<from h in Model, select: %{avg: avg(h.id), count: count(h.pass)}>

感谢。

0 个答案:

没有答案