将数据插入Datomic分区

时间:2015-04-16 22:11:51

标签: clojure datomic

查看教程文档,我尝试通过从文件加载模式来创建分区,该文件包含以下内容:

 {:db/id #db/id[:db.part/db],
  :db/ident :account,
  :db.install/_partition :db.part/db}

如果我尝试使用以下内容插入数据:

  (d/transact conn
              [{:db/id #db/id[:db.part/user -1]
                :validation/email email
                :validation/code  code}])

Everthing按预期工作。但如果我更换" user"我的分区名称"帐户",像这样:

  (d/transact conn
              [{:db/id #db/id[:db.part/account -1]
                :validation/email email
                :validation/code  code}])

我收到此错误:

IllegalArgumentExceptionInfo :db.error/not-a-db-id Invalid db/id: #db/id[:db.part/account -1]  datomic.error/arg (error.clj:57)

我做错了什么?我怎么能确定我已经创建了分区?

1 个答案:

答案 0 :(得分:3)

您的分区名称为:account,而不是:db.part/account

以下代码应该有效。

  (d/transact conn
              [{:db/id #db/id[:account -1]
                :validation/email email
                :validation/code  code}])

您可以像这样查询已安装分区的列表

(d/q '[:find [?ident ...]
             :where
             [?e :db/ident ?ident]
             [_ :db.install/partition ?e]]
           db)
=> [:account :db.part/tx :db.part/user]