2016-04-05 4 views
4

Datomicに付属しているgeting-started.cljファイルの54行目(samples/seattleの下)によれば、私はプッシュ関数を次のようなクエリの中で使用できるはずです:クエリのDatomicプルの使用

中にはIllegalArgumentException引数[*]:

(defn get-tag [] (d/q '[:find (d/pull ?e [*]) 
         :where [?e :tag.tag/term]] (db conn))) 

:見つけるには、(315 query.clj)変数datomic.query /検証クエリではありません、私はエラーを取得する以下の私のコードでただし

(def pull-results (q '[:find (pull ?c [*]) :where [?c :community/name]] (db conn))) 

、さて、私の目には、これら2つは同様に構築されています。 http://docs.datomic.com/clojure/#datomic.api/pullから読み取るとプル機能のAPIという事実と接続されるように表示されます。

(pull db pattern eid) 

私はシアトルのコードが書かれていたので、APIが変更されたことを言うでしょう。私は正しいですか?そうでなければ、ここで何が起こっているのですか?ありがとう

+1

'd /'から 'd /'を削除するのは私の推測です。この場合の構文です。 – ClojureMostly

+0

ありがとう!それを固定した – Zuriar

答えて

5

コメント者が指摘するように、問題は、プル式を使用する代わりにdatomic.api/pull関数を渡しています。明確化のいくつかのポイント:

あなたは、クエリの内部でpull機能を呼び出すことが、find句内pullexpressionと呼ばれる特殊な表現を使用していません。クエリはデータ構造リテラルを受け入れることに注意してください(なぜquote/'を使用する必要があります)。 pullの式は、query grammarの一部であり、datalogパーサが認識するものであり、異なる呼び出しを持つDatomic APIのpull関数を直接呼び出すものではありません。

関連する問題