我正在开发一个使用 datomic 的 webapp。像每个 web 应用程序一样,我确实有一个用户管理,我想将其作为单独的模块/库提供。
现在我的想法是拥有一个带有电子邮件、密码和启用标志的基本用户模式。然后,使用我的用户库的每个库都会添加额外的域特定用户属性。
所以我会有两个这样的模式:
{:db/id #db/id [:db.part/db],
:db/ident :friendui
:db.install/_partition :db.part/db
:db/doc "The partition of the database for releases"}
{:db/id #db/id [:db.part/db]
:db/ident :friendui/id
:db/valueType :db.type/uuid
:db/cardinality :db.cardinality/one
:db/unique :db.unique/identity
:db.install/_attribute :db.part/db
:db/doc "A unique identifier for any element"}
;; users
{:db/id #db/id [:db.part/db]
:db/ident :user/email
:db/index true
:db/unique :db.unique/identity
:db/valueType :db.type/string
:db/cardinality :db.cardinality/one
:db.install/_attribute :db.part/db}
]...
而使用用户库的库是这样的:
{:db/id #db/id [:db.part/db],
:db/ident :lweb
:db.install/_partition :db.part/db
:db/doc "The partition of the database for releases"}
{:db/id #db/id [:db.part/db]
:db/ident :lweb/id
:db/valueType :db.type/uuid
:db/cardinality :db.cardinality/one
:db/unique :db.unique/identity
:db.install/_attribute :db.part/db
:db/doc "A unique identifier for any element"}
;; users
{:db/id #db/id [:db.part/db]
:db/ident :user/attr1
:db/index false
:db/valueType :db.type/string
:db/cardinality :db.cardinality/one
:db.install/_attribute :db.part/db}
……
现在我看到的问题是我有两个不同的分区应该合并到。有没有办法用datomic解决这个问题?
更新我想得越多,我就越想我只需要在使用库中定义模式并在模式中声明用户库需要什么。