Здравствуйте, милые разработчики :)
tl; dr: Лучше ли проверять, существует ли документ базы данных с пользовательским валидатором mongoose ИЛИ в распознавателе graphQL ИЛИ это чисто личное предпочтение? ?
Контекст / Подробности: Я работаю над приложением MERNQL (Mongo, Express, React, Node, GrahQL), где пользователи могут создавать учетные записи с адресом электронной почты и в настоящее время прорабатывают мой путь черезпроверка на стороне сервера.
Моя текущая настройка включает в себя регистрационную мутацию, в которой мы делаем следующее в начале этой мутации, чтобы предотвратить дублирование учетных записей с одним и тем же адресом электронной почты:
// inside registration mutation
const user = await User.findOne({ email: email });
if (user) {
throw new Error('This user already exists');
}
Просматривая документацию и примеры mongoose, янашел другой пример MERNQL, который выполнял эту проверку в пользовательском валидаторе на их модели mongoose следующим образом:
// Inside user schema file
const userSchema = new mongoose.Schema({
email: {
type: String,
validate: {
validator: async email => await User.where({ email }).countDocuments() === 0,
message: ({ value }) => `Email ${value} has already been taken.` // TODO: Harden against injection attacks
}
},
...
Лично я склонен пойти с первым методом и проверить эти вещи в моем преобразователе. Тем не менее, я подумал, что кто-то, возможно, сталкивался с этим раньше или хочет поделиться своим пониманием.
Спасибо всем!
☜ (˚ ▽ ˚) ☞