【发布时间】:2019-08-22 05:17:17
【问题描述】:
我正在为一个关于员工轮班的小项目编写 API Rest,但我被困在如何设计模型上。我找到了一种设计方法,但我怀疑它是否是最好的方法。
我的收藏是:
- 用户:(员工)
- 职位:(员工职位)
- 班次:(开始 - 结束时间取决于员工职位。)
- 记录:(班次、班次和员工的日期)
- Rota:(关于rota的信息)
用户可以拥有多个职位。
班次只有一个位置。
记录收集员工的变动数组和有关轮班的参考资料。
我将简化我的代码:
const User = Schema({
name: {type: String},
position: [{type: Schema.Types.ObjectID, ref 'Positions'}]
});
const positions = Schema({
name: {type: String}
});
const Shifts = Schema({
start_time: {type: Date},
end_time : {type: Date},
position: {type: Schema.Type.ObjectID, ref 'Positions'}
});
const Records = Schema({
start_date: {type: Date},
end_date : {type: Date},
shift: {type: Schema.Type.ObjectID, ref 'Shifts'},
employees:[{type: Schema.Type.ObjectID, ref 'Users'}]
});
您认为开发模式是否是一个好的设计?
有什么需要改进的吗?还是要改变什么?
【问题讨论】:
-
如果里面只有一个名字,你真的需要一个“职位”集合吗?用户输入中的“位置:{类型:字符串}”不够吗?
-
嗨,我添加了一个位置集合,因为用户可以拥有多个位置。
-
那么它可能是一个字符串数组。如果用户可以管理职位(创建/删除等),那么拥有职位集合将是有意义的
-
没错,我的想法是经理可以在需要时添加新职位。但是我应该如何处理集合和记录,因为当我进行查询时,位置会出现在任何地方,我不知道它是否好
标签: javascript node.js mongodb rest api