我有一个允许用户创建帐户的应用。这一切都运行正常,但我现在想创建一个系统,将用户添加到组并将角色作用于这些组。在SO上阅读一些相关的问题我创建了一个新的Group模式,并在它和我的User模式之间创建了引用:
我的用户架构如下:
const UserSchema = new mongoose.Schema({
email: {
type: String,
unique: true,
lowercase: true,
trim: true,
validate: [validator.isEmail, 'Invalid Email Address'],
required: 'Please supply an email address'
},
name: {
type: String,
required: 'Please supply a name',
unique: true,
trim: true
},
group: {
type: mongoose.Schema.ObjectId,
ref: 'Group',
required: 'You must supply a Group'
}
)}
我的Group架构如下:
const GroupSchema = new mongoose.Schema({
name : String,
members: [{
role: {
type: String
},
user: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
}
}],
});
我有一些中间件可以注册和验证用户,但实际上注册表单中的值当前用于创建新用户:
const user = new User({ email: req.body.email, name: req.body.name });
我希望所有用户都成为群组的一部分(即使只是一个群组)并且该群组中的第一个人将成为管理员(他们以后可以将其他人添加到他们的群组中,管理用户角色等)。
我认为当我创建用户时,我会同时创建他们所属的群组并将其添加到其中,但我不知道最好的方法是什么这样做。我是否应该首先创建一个组的中间件,然后创建用户传递先前创建的组的group_id?
似乎有更好的方法可以做到这一点,但我不知道我不知道它是什么。任何帮助非常感谢。