我在后端使用CouchDB(类似于MongoDB)作为主数据库和NodeJS。
由于CouchDB是无模式的,我必须处理业务规则中实体之间的关系。目前我直接在控制器中管理这种关系 - 这是我如何实现这种关系的一个非常简单的例子:
async function createProject(user, project) {
project.userId = user.id;
let response = await projectsDB.save(project);
return response;
}
是否存在管理此类关系的架构模式。我正在考虑直接在域实体或数据库模块中抽象关系层 - 控制器似乎不是我应该管理它的地方。
我可以通过在实体实例上管理这种关系来做到以下几点
async function createProject(user, project) {
let project = new Project(project, user); // if no user provided --> throw
let response = await projectDB.save(project);
return response;
}
或者它可能在DB层中:
async function createProject(user, project) {
let projectDB = new DB(user); // if no user provided --> throw
let response = await projectDB.save(project);
return response;
}