в моем веб-приложении (NodeJS + ExpressJS + SequelizeJS) я определил модель. Пользователь:
let User = connection.define('user', {
username: {
type: Sequelize.STRING(40),
unique: true,
allowNull: false,
validate: {
notEmpty: true,
min: 4,
}
},
email: {
type: Sequelize.STRING,
unique: true,
allowNull: false,
notEmpty: true,
validate: {
isEmail: true
}
},
password: {
type: Sequelize.STRING,
allowNull: false,
notEmpty: true,
validate: {
min: 8,
}
},
name: {
type: Sequelize.STRING(50),
validate: {
min: 2
}
},
surname: {
type: Sequelize.STRING(50),
validate: {
min: 3
}
},
bio: Sequelize.TEXT(140),
lastLogin: Sequelize.DATE,
dateJoined: Sequelize.DATE,
active: {
type: Sequelize.BOOLEAN,
defaultValue: false
}
});
Я хочу, чтобы имя пользователя и адрес электронной почты были уникальными, чтобы никто не мог повторно использовать существующиеадрес электронной почты или существующее имя пользователя.Итак, я протестировал его и заметил, что построенный запрос выглядит следующим образом:
Executing (default):
CREATE TABLE IF NOT EXISTS `user`(
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
`username` VARCHAR(40) NOT NULL UNIQUE,
`email` VARCHAR(255) NOT NULL UNIQUE,
`password` VARCHAR(255) NOT NULL,
`nome` VARCHAR(50),
`cognome` VARCHAR(50),
`bio` TEXT,
`lastLogin` DATETIME,
`dateJoined` DATETIME,
`active` TINYINT(1) DEFAULT0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NOT NULL);
И запрос выглядит нормально.Затем я решил делать один и тот же запрос вставки (с тем же именем пользователя и адресом электронной почты) каждый раз, когда включается мой сервер узлов, чтобы проверить, сохраняется ли ограничение NOT NULL
.
User.create({
username: 'MYUSERNAME',
email: 'MYEMAIL@GMAIL.COM',
password: 'MYPASSWORD'
})
.then(newUser => {
console.log('Insertion OK, username:', newUser.username);
})
.catch(error => {
console.log(error);
});
Каждый раз вывод консолия перезагружаю свой сервер:
Insertion OK, username: MYUSERNAME
И если я проверяю записи базы данных, в пользовательской таблице я вижу несколько строк с одинаковыми данными в одних и тех же полях.
-----------------------------------------------
| Username | Email | Password |
-----------------------------------------------
| MYUSERNAME | MYEMAIL@GMAIL.COM | MYPASSWORD |
-----------------------------------------------
| MYUSERNAME | MYEMAIL@GMAIL.COM | MYPASSWORD |
-----------------------------------------------
| MYUSERNAME | MYEMAIL@GMAIL.COM | MYPASSWORD |
-----------------------------------------------
Почему не сохраняется ограничение UNIQUE?
Я использую файл sqlite3 для базы данных.