如何允许唯一的行数据使用序列化?



我想在我的表中唯一的行数据条目。例如:

requient_id、Resource_id、User_id为列。如果要输入到这些列中的数据对于该行来说不是唯一的,那么就不应该允许输入该数据。

module.exports = (sequelize, Sequelize) => {
const BookmarkTbs = sequelize.define("BookmarkTbs", {
Bookmark_id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
Requirement_id: {
type: Sequelize.INTEGER,
allowNull: true,
references: { 
model: 'RequirementsTbs',
key: 'Requirement_id'
},
onUpdate: 'CASCADE',
onDelete: 'CASCADE', 
},
Resource_id: {
type: Sequelize.INTEGER,
allowNull: true,
references: { 
model: 'ResourceTbs',
key: 'Resource_id'
},
onUpdate: 'CASCADE',
onDelete: 'CASCADE', 
} , 
User_id: {
type: Sequelize.INTEGER,
allowNull: false,
references: { 
model: 'UsersTbs',
key: 'User_id'
},
onUpdate: 'CASCADE',
onDelete: 'CASCADE', 
}
});
return BookmarkTbs;
};

在sequelize中有一个选项,您可以在声明模型中的列时使用该选项,该选项称为" unique ";缺省情况下,它被设置为false。当设置为true,并且在该列中输入重复数据时,您将得到"blank already exists in table"一行的错误信息。(忘记了准确的错误信息)。

的例子:

module.exports = User = (sequelize, DataTypes) => {
const User = sequelize.define('User', {
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true
},
...
email: {
type: DataTypes.STRING,
unique: true
},
...
})
return User
}

在这里,如果一个用户试图注册一个已经在使用的电子邮件,你会得到一个错误,你可以捕获并发送给用户一个http 409状态和一个适当的错误消息。

最新更新