Elixir 动态选择地图外星仪

Elixir 动态选择地图外星仪,elixir,ecto,Elixir,Ecto,到目前为止,我已经创建了查询: query = from page in "wagtailcore_page", where: page.url_path == ^url_path, join: h in ^table_name, where: h.page_ptr_id == page.id 我现在想在h 例如,如果我传入[:body,:footer]我想运行: query = from [_page, h] in query, select:

到目前为止,我已经创建了查询:

query = from page in "wagtailcore_page",
      where: page.url_path == ^url_path,
      join: h in ^table_name,
      where: h.page_ptr_id == page.id
我现在想在
h

例如,如果我传入
[:body,:footer]
我想运行:

query = from [_page, h] in query,
      select: %{body: h.body, footer: h.footer}
我发现它可以用来解决这个问题

但当我跑步时:

from [_page, h] in query, select: EctoApi.map(h, [:body])
我得到一个错误:

** (Ecto.Query.CompileError) `EctoApi.map(h, [:alphatext])` is not a valid query expression

根据页面底部的
重要消息
,我们必须在执行连接时包含关系中使用的外键,而我们没有这样做,但是我不知道如何执行这种类型的
assoc
,因为我们正在执行的动态连接类型可以在不导入任何内容的情况下使用。实际的函数是在EXTO内部实现的,
EXTO.Query.API.map/2
仅用于文档目的。以下方面应起作用:

from [_page, h] in query, select: map(h, [:body, :footer])

这是否有效:
从查询中的[\u page,h]选择:map(h,[:body,:footer])
?否:我得到:
**(exto.query.CompileError)map(h,[:body,:footer])不是有效的查询表达式
事实上,它有效!Fab,谢谢@Dogbert因为它起作用了,也许将评论升级为答案是有意义的。如果你愿意,我可以帮你。那太好了,谢谢