Экто-запрос с фрагментом - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть следующий запрос в моем конвейере:

where([e], fragment("?->>? = ?", e.fields, ^field_name, ^field_value))

e в данном случае означает event. Что делает первый параметр вызова метода фрагмента?

1 Ответ

1 голос
/ 30 апреля 2019

Первый параметр вызова Ecto.Query.API.fragment/1 - это шаблон фрагмента для отправки в базу данных.

Здесь это функция Postgres для извлечения поля объекта JSON в виде текста . Тем не менее,

fragment("?->>? = ?", e.fields, ^field_name, ^field_value)

буквально означает «где вложенное поле с именем field_name в поле JSONB имеет значение, равное field_value».

...