首页 > 解决方案 > 使用预加载时如何检查未定义的值并使用 Ecto 不返回值

问题描述

我正在用ecto做凤凰框架。

我写了以下代码。

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

    Repo.all(query)

当所有预加载assocs在数据库中有相关值时,它就可以工作。

但是,当预加载assocs没有相关值时,它返回 null。它会导致function nil.assoc3/0 is undefinedphoenix JSON 视图中的错误。

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

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

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

标签: elixirphoenix-frameworkecto

解决方案


问题似乎与assoc3存在无关nil。根据错误消息,视图尝试调用nil.assoc3,这意味着数据库没有返回初始查询的结果(读取:no Member。)

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


推荐阅读