#database #mongodb
#База данных #mongodb
Вопрос:
У меня здесь есть модель пользователя, которая в настоящее время имеет только 2 возможные роли. Один — администратор, а другой — обычный пользователь.
const userSchema = mongoose.Schema({
name: {
type: String,
required: true
},
email: {
type: String,
required: true,
unique: true
},
password: {
type: String,
required: true
},
isAdmin: {
type: Boolean,
required: true,
default: false
}
}, { timestamps: true
})
Как вы можете видеть, если для параметра isAdmin
было установлено значение true, он автоматически станет администратором, в противном случае это обычный пользователь.
Но все меняется, когда я добавляю новую роль, например: isOwner
то есть я снова добавляю новое поле:
const userSchema = mongoose.Schema({
name: {
type: String,
required: true
},
email: {
type: String,
required: true,
unique: true
},
password: {
type: String,
required: true
},
isAdmin: {
type: Boolean,
required: true,
default: false
},
isOwner: {
type: Boolean,
required: true,
default: false
},, { timestamps: true
})
Как вы можете видеть, я добавил новое поле isOwner
вверху.
На мой вопрос даны эти три роли: isAdmin
, isOwner
и обычный пользователь, правильно ли я поступаю, чтобы сделать это и управлять 3 разными ролями? или есть лучший способ сделать это?
Примечание: это работает так, что администратор имеет общий доступ ко всем вакансиям владельца, в то время как обычный пользователь может комментировать только вакансию, опубликованную владельцем (который опубликовал задание)
Ответ №1:
В будущем у вас может быть больше ролей, лучше всего использовать поле массива для пользовательских ролей.
справочный документ по массиву
const userSchema = mongoose.Schema({
name: {
type: String,
required: true
},
email: {
type: String,
required: true,
unique: true
},
password: {
type: String,
required: true
},
isAdmin: {
type: Boolean,
required: true,
default: false
},
roles: {
type:[String],
required: true,
default:["regular"]
}
},
{ timestamps: true
})
Комментарии:
1. Как это работает? Можете ли вы разместить пример, основанный на моих потребностях, пожалуйста? Я полный новичок
2. const UserSchema = мангуст. Схема ({ имя: { тип: строка, требуется: true }, адрес электронной почты: { тип: Строка, требуется: true, уникальный: true }, пароль: { тип: Строка, требуется: true }, isAdmin: { тип: логическое значение, требуется: true, по умолчанию: false }, роли: { тип: [Строка], обязательно: true, по умолчанию: [«обычный»] } }, {временные метки: true })
3. Можете ли вы показать мне, как установить это при добавлении новых записей?