Promise.then () запускает SequelizeUniqueConstraintError - PullRequest
0 голосов
/ 02 апреля 2020

Я немного новичок в обещаниях и Sequelize. Я пытаюсь вставить нового пользователя в базу данных SQLite, используя ограничения. В модели User я пометил свойство email как unique, однако, когда это ограничение не выполняется, код внутри блока .then() все еще выполняется.

Код:

User.create({
   email: uname,
   password: psw
})
   .then(console.log('success'))
   .catch((err) => { console.log(err); });

Вывод:

Success
Executing (default): INSERT INTO `users` ...
{ SequelizeUniqueConstraintError: Validation Error ... }

Конечно, запись в БД не добавляется.

Ожидаемый вывод (при вставке уникального значение):

Executing (default): INSERT INTO `users` ...
success

Ожидаемый результат (при вставке повторяющегося значения):

Executing (default): INSERT INTO `users` ...
{ SequelizeUniqueConstraintError: Validation Error ... }

Любая помощь будет очень Добро пожаловать, спасибо!

1 Ответ

1 голос
/ 02 апреля 2020

Теперь я вижу вашу ошибку:

User.create({
   email: uname,
   password: psw
})
   .then(console.log('success'))
   .catch((err) => { console.log(err); });

Что вы здесь делаете, это то, что вместо передачи функции в then () , вы выполнение функции . Конечно, он будет работать: D Измените его на:

User.create({
   email: uname,
   password: psw
})
   .then(()=>{console.log('success')})
   .catch((err) => { console.log(err); });
...