Datomic - 动态查询函数
Datomic - Dynamic Query Functions
我很惊讶这不起作用:
(d/q '[:find [?e ...]
:in $ ?field ?op ?value
:where [?e ?field ?x]
[(?op ?x ?value)]
]
db
:my/field
>
10))
如果我删除 op 并在 where 子句中的 > 中显式编码,它就可以工作。我可以不使用输入参数来引用核心 clojure 函数吗?规则会有帮助吗?或者我是否需要在运行时使用 quoting/unquotinq?
构建整个查询
谢谢。
试试这个:
(defn invoke [f & args] (apply f args))
(d/q '[:find [?e ...]
:in $ ?field ?op ?value
:where
[?e ?field ?x]
[(myapp.utils.datomic/invoke ?op ?x ?value)]]
db :my/field > 10)
我很惊讶这不起作用:
(d/q '[:find [?e ...]
:in $ ?field ?op ?value
:where [?e ?field ?x]
[(?op ?x ?value)]
]
db
:my/field
>
10))
如果我删除 op 并在 where 子句中的 > 中显式编码,它就可以工作。我可以不使用输入参数来引用核心 clojure 函数吗?规则会有帮助吗?或者我是否需要在运行时使用 quoting/unquotinq?
构建整个查询谢谢。
试试这个:
(defn invoke [f & args] (apply f args))
(d/q '[:find [?e ...]
:in $ ?field ?op ?value
:where
[?e ?field ?x]
[(myapp.utils.datomic/invoke ?op ?x ?value)]]
db :my/field > 10)