我正在尝试找出如何与成员,管理员,用户,来宾建立用户架构的方法。这是什么想法,但这是常规的做法吗?我很难找到一个好的资源来学习如何做。
const UserSchema = new Schema({
username: {
type: String,
required: true
},
role: {
type: [
{
type: String,
enum: ["user", "admin"],
default: ["user"]
}
]
},
email: {
type: String,
required: true
},
password: {
type: String,
required: true
},
date: {
type: Date,
default: Date.now
}
});
答案 0 :(得分:0)
您想要做的是从所需的最小属性集开始,这些属性在3种模型类型(来宾,用户,管理员)之间共享,这就是您的基本模式。
然后使用Mongoose descriminators(猫鼬模式继承)继承自它,并为您的模型建模添加更多属性。
例如,您的guest
可能没有role
属性,因为他是访客。因此,您可能要从guest
的基本模型开始,并在其基础上添加用户/管理员所需的其他道具。
示例:
var options = {discriminatorKey: 'type'};
var guestSchema = new mongoose.Schema({
date: { type: Date, default: Date.now },
username: { type: string, default: 'guest_' + Date.now },
}, options);
var Guest = mongoose.model('Guest', guestSchema);
var User = Guest.discriminator('User',
new mongoose.Schema({password: String}, options));
// Now you have Guest as base model and User with decorated 'password' field
您可以阅读official documentation on this here
关于该主题的在线文章也很多。