Я использую knex. Хотите простой способ проверить, существует ли имя пользователя в БД. Если это так, верните сообщение об ошибке («имя пользователя уже существует»). Если нет, то вставьте.
router.post('/register', (req, res) => {
const username = req.body.username;
const email = req.body.email;
const password = req.body.password;
knex('users')
.insert([{
username: req.body.username,
email: req.body.email,
password: bcrypt.hashSync(req.body.password, 10)
}]).then(()=>{})
})
ОБНОВЛЕНО
Итак, у меня есть программа, работающая как ожидалось Он вставляется только если имя пользователя и адрес электронной почты не существуют в таблице. Однако у меня есть две проблемы, когда я написал этот код.
Обратите внимание, что я новичок в библиотеке knex и обещаниях.
- Производительность, все мое приложение замедлилось
Мой оператор if / else всегда выполняет обе команды, однако он никогда не вставляется в БД, если существует электронная почта или имя пользователя. Однако я всегда вижу console.log, даже когда он не вставляется.
const insertUser = knex('users')
.returning('id')
.insert([{
username: req.body.username,
email: req.body.email,
password: bcrypt.hashSync(req.body.password, 10)
}]).then(userNameValid => {console.log(userNameValid)})
const validityCheck = knex.select("username")
.from("users")
.where("username", username)
.andWhere("email", email)
.then(userNametList => {
console.log(userNametList)
})
if (!validityCheck){
return insertUser;
} else if (validityCheck !== null){
return console.log('Username or email is already in use')
}