通过 eid 从 datomic 获取项目,输入太少?
getting items by eid from datomic, too few inputs?
所以我正在尝试使用实体 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 但仍然不确定我误入歧途的地方。
感谢任何帮助(=
您的 :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
参数无法真正获得 "into" 查询。你必须明确地传递它,那里没有魔法。
所以我正在尝试使用实体 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 但仍然不确定我误入歧途的地方。
感谢任何帮助(=
您的 :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
参数无法真正获得 "into" 查询。你必须明确地传递它,那里没有魔法。