我使用 CouchDB,这是一个面向文档的数据库,将数据存储为 JSON 文档。我在后端使用 Javascript,所以我可以直接存储 JS 对象。目前,我在存储在 CouchDB 中的模型和我的域层之间有直接映射。我认为这不是一件好事,因为我完全依赖这个数据库。
例子
我有 2 个实体用户和项目。一个用户可以有多个项目,这些模型在数据库中表示为单独的文档:
用户文档
{
"_id": "1",
"entity": "user"
}
项目文档
关系由属性user_id引用。
{
"_id": "2",
"entity": "project",
"user_id": "1",
"name": "project1"
}
// other project document
{
"_id": "3",
"entity": "project",
"user_id": "1",
"name": "project2"
}
我的问题是:
我应该在层之间保持这种方便的映射,还是应该创建一个抽象层,将模型从数据库转换为域对象?
更方便的用户域对象示例:
// _id property is replaced by id
// entity property is removed
// projects relations stand in a projects array
{
id: "1",
projects: [
{ id: "2", name: "project1"},
{ id: "2", name: "project1"}
]
}
注意:我想阅读 Eric Evans 的《领域驱动设计》一书。也许它可以帮助我了解如何管理此类模型抽象。