这很有效:
a1 = Repo.get_by(MyModel, var1: var1)
a2 = Repo.preload(a1, [:aaa, bbb: :ccc]).items
但这引发了一个例外:
Repo.get_by(MyModel, var1: var1) |> Repo.preload([:aaa, bbb: :ccc]).items
# or this
# a2 = Repo.get_by(MyModel, var1: var1) |> Repo.preload([:aaa, bbb: :ccc]).items
感:
** (UndefinedFunctionError) function MyApp.Repo.preload/1 is undefined or private. Did you mean one of:
* preload/2
* preload/3
它有什么用?
答案 0 :(得分:6)
您的代码目前解析为:
Repo.get_by(MyModel, var1: var1) |> (Repo.preload([:aaa, bbb: :ccc]).items)
即,首先使用1个参数调用Repo.preload
,然后提取其items
字段,然后管道发生,这不起作用。
您可以通过将管道包装在括号中来解决此问题:
(Repo.get_by(MyModel, var1: var1) |> Repo.preload([:aaa, bbb: :ccc])).items
或使用Map.get
或Map.fetch!
提取items
密钥:
Repo.get_by(MyModel, var1: var1) |> Repo.preload([:aaa, bbb: :ccc]) |> Map.fetch!(:items)