我正在使用 Clojure 在 Datomic 中进行一些查询,如果我不尝试在查询中返回带有“:keys”关键字的 Map,我会尝试返回带有键的 Map 而不是 Vector工作正常。
我尝试在 :find 和 :key 之间使用相同和不同的名称。 如果我删除下面的 :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))
确切的错误是: datomic.client.api.async/ares (async.clj:56) 处执行错误 (ExceptionInfo)。
“:find 中的参数 :keys 不是变量”
以下是 Datomic 文档中的示例。
[:find ?artist-name ?release-name
:keys artist release
:where [?release :release/name ?release-name]
[?release :release/artists ?artist]
[?artist :artist/name ?artist-name]]
最佳答案
我认为您使用的是旧版本的客户端,尚不支持 :keys
选项。
关于clojure - 使用 Datomic 返回 Map 而不是 Vector 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58209981/