使用Datomic返回地图而不是矢量时出错

时间:2019-10-02 22:11:06

标签: clojure datomic

我正在使用Clojure在Datomic中进行一些查询,如果我不尝试在查询中返回带有“:keys”关键字的Map,则会尝试返回包含键而不是Vector的Map。工作正常。

我试图在:find和:keys之间使用相同且不同的名称。 如果我在下面删除:keys行,它会正常工作。

我正在将[org.clojure / clojure“ 1.10.0”]与[com.datomic / client-pro“ 0.8.28”]结合使用。

LEFT

这是我的称呼方式:

(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)]])

确切的错误是: 在datomic.client.api.async / ares(async.clj:56)处执行错误(ExceptionInfo)。

“:find中的参数:key不是变量”

下面是他们文档中的Datomic示例。

(d/q get-links db filter skip (+ first skip))

1 个答案:

答案 0 :(得分:2)

我认为您使用的是客户端的旧版本,尚不知道:keys选项。