У меня есть это user.model
// user.model.ts
interface User {
name: string
email: string
password: string
is_active: boolean
}
И я проверяю, принимается ли электронная почта и активен ли пользователь, прежде чем подписываться на электронную почту.
// If email is taken and is_active is true
if (found && found.is_active) {
return next(Boom.badRequest('Email is taken'))
} else if (found && !found.is_active) {
// If email is taken and is_active is false, ask to signin
return next(Boom.unauthorized('Please signin to activate'))
} else {
const created = await service.create(data)
res.send('OK')
}
Но проблема в том, когда я попробовал с адресом электронной почты (some@one.com), который уже зарегистрирован и активен , он показывает Email is taken
, что является правильным. И затем, когда я попытался с другим адресом электронной почты (any@one.com), который зарегистрирован, но не активен , он попытался вставить данные и сломал сервер, потому что email
столбец unique
- это база данных (Postgres).
Я попробовал еще раз, но на этот раз (any@one.com) первым и (some@one.com) вторым. Он снова сломался при втором условии.
Думаю, проблема в том, что он работает только для одного условия.
Я также пробовал с switch...case
, тоже не работает.
switch (true) {
case found && found.is_active:
// If email is taken and is_active is true
return next(Boom.badRequest('Email is taken'))
case found && !found.is_active:
// If email is taken and is_active is false, ask to signin
return next(Boom.unauthorized('Please signin to activate'))
default: {
const created = await service.create(data)
res.send('OK')
}
}
Помогите, пожалуйста, как это исправить?