Elixir 如何在使用preload时检查未定义的值,并使用EXTO不返回值

Elixir 如何在使用preload时检查未定义的值,并使用EXTO不返回值,elixir,phoenix-framework,ecto,Elixir,Phoenix Framework,Ecto,我正在和外星人一起做凤凰框架 我编写了以下代码 query = from m in Member, where: m.member_id == ^member_id, preload: [:assoc1, :assoc2, :assoc3] Repo.all(query) 当所有预加载的assocs都有相关的DB值时,它就工作了 但是,当预加载的assocs没有相关值时,它将返回null。 它导致错误函数ni

我正在和外星人一起做凤凰框架

我编写了以下代码

    query = from m in Member,
                 where: m.member_id == ^member_id,
                 preload: [:assoc1, :assoc2, :assoc3]

    Repo.all(query)
当所有预加载的
assocs
都有相关的DB值时,它就工作了

但是,当预加载的
assocs
没有相关值时,它将返回null。 它导致错误
函数nil.assoc3/0在phoenix JSON视图中未定义

我想展示JSON。例如,当
assoc3
值为nil时,我很高兴能得到以下JSON

[{"member_id":1, "assoc1":"xxx", "assoc2":"yyy", "assoc3":""}]

请给我建议如何管理无相关的零值

问题似乎不在于
assoc3
是否为
nil
。根据错误消息,视图尝试调用
nil.assoc3
,这意味着数据库没有为初始查询返回任何结果(读取:no
Member

您应该验证来自数据库的响应,并为成功返回的
成员
nil
呈现不同的页面