В разделе "Встроенный" документа Datomic Queries and Rules говорится:
Языки запросов, такие как SQL, ориентированы вокруг модели клиент-сервер где, в одном разговоре, вы будете иметь оба:
- Ответьте на свой основной вопрос, например. который купил носки в этом месяце.
- Восстановить любую дополнительную информацию, необходимую для отчетности и обработки, например. каковы их имена и адреса электронной почты.
Последнее на самом деле не вопрос, это просто механическая навигация к соответствующей информации.
В то время как я ценю, как ортогональность двух различных упомянутых аспектов соблюдается, я думаю, что мне часто нужно получить целую сущность, в зависимости от ее атрибутов.
Насколько я знаю, запросы обычно имеют такую форму:
(datomic.api/q '[:find ?name ?age ?email
:where
[?e :myapp/name ?name]
[?e :myapp/age ?age]
[?e :myapp/email ?email]]
(db conn))
Если бы я хотел получить объекты, у которых есть N атрибутов, я бы хотел, чтобы они перечисляли их все в каждом запросе, что кажется утомительным и подверженным ошибкам.
Как сообщить Datomic для получения объектов со всеми полями, в которых они были сохранены, без необходимости явно указывать их?