所以我试图使用实体id来检索最近交易到数据组数据库的项目。
然而,在调用时(get-post-by-eid zzzzzzzzz)我收到错误
IllegalArgumentExceptionInfo :db.error/too-few-inputs Query expected 2 inputs but received 1 datomic.error/arg (error.clj:57)
(defn get-post-by-eid [eid]
(d/q '[:find ?title ?content ?tags ?eid
:in $ ?eid
:where
[?eid post/title ?title]
[?eid post/content ?content]
[?eid post/tag ?tags]] (d/db conn)))
所以我认为我的查询字符串必须格式错误..
我一直在关注http://www.learndatalogtoday.org/chapter/3,但仍不确定我在哪里误入歧途。
感谢任何帮助(=
答案 0 :(得分:2)
您的:in
子句指定您希望将两个数据源传递给q
函数。 $ ?eid
表示您说要传入数据库(绑定到$
),以及其他一些值,这些值将绑定到?eid
。
像这样:
(defn get-post-by-eid [eid]
(d/q '[:find ?title ?content ?tags ?eid
:in $ ?eid
:where
[?eid post/title ?title]
[?eid post/content ?content]
[?eid post/tag ?tags]]
(d/db conn)
eid))
否则,您的eid
参数无法实际进入查询。你必须明确地传递它,那里没有魔法。