Я делаю какой-то запрос в Datomic, используя Clojure, я пытаюсь вернуть карту с ключами вместо вектора, если я не пытаюсь вернуть карту с ключевым словом ": keys" в запросе itработает отлично.
Я пытался иметь одинаковые и разные имена между ключами: find и:. Если я уберу строку: keys ниже, она будет работать нормально.
Я использую [org.clojure / clojure "1.10.0"] с [com.datomic / client-pro "0.8.28"].
(def get-links
'[:find ?e ?url ?description ?createdat ?order ?postedby
:keys e url description createdat order postedby
:in $ ?filter ?skip ?skip-plus-first
:where [?e :link/url ?url]
[?e :link/description ?description]
[?e :link/createdat ?createdat]
[?e :link/postedby ?e2]
[?e :link/order ?order]
[?e2 :user/name ?postedby]
[(.contains ?url ?filter)]
[(> ?order ?skip) ]
[(<= ?order ?skip-plus-first)]])
Вот как я это называю:
(d/q get-links db filter skip (+ first skip))
Точная ошибка: Ошибка выполнения (ExceptionInfo) в datomic.client.api.async / ares (async. clj: 56).
"Аргумент: keys in: find не является переменной"
Ниже приведены примеры Datomic в их документах.
[:find ?artist-name ?release-name
:keys artist release
:where [?release :release/name ?release-name]
[?release :release/artists ?artist]
[?artist :artist/name ?artist-name]]