将数据插入 Datomic 分区
Inserting data into Datomic partition
查看教程文档,我尝试通过从文件加载我的架构来创建分区,该文件除其他外包含以下内容:
{: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}])
一切都按预期工作。但是如果我用我的分区名称 "account" 替换 "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)
我做错了什么?我怎么能确定我已经创建了分区?
您的分区名称是 :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]
查看教程文档,我尝试通过从文件加载我的架构来创建分区,该文件除其他外包含以下内容:
{: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}])
一切都按预期工作。但是如果我用我的分区名称 "account" 替换 "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)
我做错了什么?我怎么能确定我已经创建了分区?
您的分区名称是 :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]