datascript
datascript copied to clipboard
Cannot query for symbols
With datascript 0.15.2 in Clojure
(require '[datascript.core :as d])
(let [conn (d/create-conn {})]
(d/transact! conn [{:db/id -1
:name "Maksim"
:age 45
:sym 'foo}])
(d/q '[:find ?n ?a
:where [?e :sym foo]
[?e :name ?n]
[?e :age ?a]]
@conn))
You get:
1. Unhandled clojure.lang.ExceptionInfo
Cannot parse clause, expected (data-pattern | pred-expr | fn-expr |
rule-expr | not-clause | not-join-clause | or-clause |
or-join-clause)
{:error :parser/where, :form [?e :sym foo]}
core.clj: 4617 clojure.core/ex-info
core.clj: 4617 clojure.core/ex-info
parser.cljc: 608 datascript.parser$parse_clause/invokeStatic
parser.cljc: 598 datascript.parser$parse_clause/invoke
How about this way
(let [conn (d/create-conn {})]
(d/transact! conn [{:db/id -1
:name "Maksim"
:age 45
:sym 'foo}])
(prn
(d/q '[:find ?n ?a
:in $ ?sym
:where
[?e :sym ?sym]
[?e :name ?n]
[?e :age ?a]]
@conn 'foo)))
The original example shared above appears to now work fine with the latest version - I guess it got fixed at some point :slightly_smiling_face: likely by https://github.com/tonsky/datascript/pull/426