elixir - 使用预加载时如何检查未定义的值并使用 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 undefined
phoenix JSON 视图中的错误。
我想展示 JSON。assoc3
例如,当值为零时,如果我能得到以下 JSON,我会很高兴。
[{"member_id":1, "assoc1":"xxx", "assoc2":"yyy", "assoc3":""}]
请给我建议如何管理不相关的零值。
解决方案
问题似乎与assoc3
存在无关nil
。根据错误消息,视图尝试调用nil.assoc3
,这意味着数据库没有返回初始查询的结果(读取:no Member
。)
您应该验证来自数据库的响应,并为成功返回的Member
vs.呈现不同的页面nil
。
推荐阅读
- python - 使用 Python 进行混合流水车间调度的遗传算法
- java - 如何从 Spring Integration 的网关元素中的 default-reply-timeout 属性更改空值?
- android - 在android 7.0及以上版本中从URI获取路径
- javascript - 两国手机号码正则表达式怎么写?
- functional-programming - 有没有一种函子有一个功能(monad ,function A -> monad ) -> Monad
- java - 哪个版本的 eclipse IDE 与 java 10 兼容?
- android - aosp 存储库 android-7.1.2_r36 下载后不完整 42GB
- postgresql - 没有新列的表继承
- python - 如何使用 python Flask RESTplus 填充模型
- java - Java 运行时环境检测到致命错误:SIGSEGV (0xb) at pc=0x00007f3457bc96ae, pid=1192, tid=0x00007f345e1ff700