ddd:跨越多个模型的逻辑,它应该去哪里?

时间:2016-09-28 22:15:16

标签: node.js domain-driven-design ddd-service

我正在研究一个系统,并尝试将ddd与node.js一起使用。以下是系统的一个示例,来自高级别:

database tables(mongoldb):    
user    
username: String    
firstName: String    
middleName: String    
lastName: String    

department
title: String    
members: [{    
    user: {type: this.mongoose.Schema.ObjectId, ref: 'user’},    
    permissions: String    
}]    

patient   
user: {type: this.mongoose.Schema.ObjectId, ref: 'user’},    
department: [{type: this.mongoose.Schema.ObjectId, ref: ‘department’}]    

lab: [{    
    patient: {type: this.mongoose.Schema.ObjectId, ref: ‘patient’}    
    doctor: {type: this.mongoose.Schema.ObjectId, ref: 'user’},    
    type: String,    
    results: {there is a lot going on here, }    
}]

medication: [{    
    patient: {type: this.mongoose.Schema.ObjectId, ref: ‘patient’}    
    doctor: {type: this.mongoose.Schema.ObjectId, ref: 'user’},    
    name: String,    
    dosage: Number,    
    etc.    
}]

业务逻辑表明,只有作为患者,部门列表中某个部门成员的患者或医生才能查看他的医疗信息。我最初认为它应该在一个单独的域服务中,因为它似乎跨越实体,但缺点是需要其他服务来调用权限服务,我认为服务不应该调用其他服务。如果我放入实验室和药物实体,那么我是重复代码并且违反干燥。如果我添加到部门域服务,那么我正在进行服务调用另一个服务。从ddd的角度来看,这样的逻辑属于哪里?

1 个答案:

答案 0 :(得分:0)

你在哪里获得的想法服务不应该调用其他服务。安全通常是一项单独的服务或其他。