elixir - 选择合并在 Enum.reduce 中没有按预期工作
问题描述
这些是参数:
%{"$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)}>
第二次运行“$count”。由于此代码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)}>
谢谢。
解决方案
推荐阅读
- c++ - 如何修复从文件中读取并使用while循环存储在数组中的错误值?
- ruby-on-rails - 为什么当我们访问视图中未定义的实例变量时,Rails 不会抛出异常?
- firebase - 如何从 Firebase 文档中读取值并与变量进行比较,然后更改文档的值
- typescript - 如何:Typescript 实例字段以避免未定义
- nginx - NGINX 在现有域名/站点上设置服务器块
- javascript - 标记模板文字混淆
- ruby - Ruby:在方法上下文中获取对 self 是其属性的对象的引用
- algorithm - 对问题的直觉?
- android - Android Wear 应用因桥接通知而被拒绝
- javascript - webapp网络:上传文件和修改