Как проверить неопределенное значение при использовании предварительной загрузки и не возвращать значение с помощью Ecto - PullRequest
0 голосов
/ 01 февраля 2020

Я делаю феникс фреймворк с ecto.

Я написал следующий код.

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

    Repo.all(query)

Когда все предварительно загруженные assocs имеют связанные значения в БД, это работает.

Однако, если предварительно загруженный assocs не имеет связанного значения, он возвращает ноль. Это вызывает ошибку function nil.assoc3/0 is undefined в представлении феникса JSON.

Я хотел бы показать JSON. Я рад, что смогу выполнить следующие действия: JSON, если, например, значение assoc3 равно нулю.

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

Пожалуйста, дайте мне совет, как управлять никакими значениями, связанными с нулем.

1 Ответ

1 голос
/ 01 февраля 2020

Кажется, проблема не в том, что assoc3 равно nil. Согласно сообщению об ошибке, представление пытается вызвать nil.assoc3, что означает, что база данных не вернула результата для начального запроса (читай: нет Member.)

Необходимо проверить ответ из базы данных и отобразить различные страницы для успешно возвращенных Member против nil.

...