我目前在我的MySQL数据库上运行Sequelize.js代码,该数据库使用迁移创建。我有一个人员表,定义如下:
return queryInterface.createTable('Persons', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
unique: true,
type: Sequelize.INTEGER
},
email: {
allowNull: false,
unique: true,
type: Sequelize.STRING
},
firstName: {
type: Sequelize.STRING
},
lastName: {
type: Sequelize.STRING
},
createdAt: {
allowNull: false,
type: Sequelize.DATE
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE
}
});
最终生成的表格如下:
`Persons` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(255) NOT NULL,
`firstName` varchar(255) DEFAULT NULL,
`lastName` varchar(255) DEFAULT NULL,
`createdAt` datetime NOT NULL,
`updatedAt` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`),
UNIQUE KEY `email` (`email`)
)
当我使用Model.create({})向数据库添加条目时(括号内没有其他内容),会向数据库添加以下对象:
id email firstName lastName createdAt updatedAt
1 '' NULL NULL 2019-05-21 15:33:13 2019-05-21 15:33:13
我在数据库中的每个非空列都有一个默认值(varchar为空字符串,布尔值为false,datetime为NOW())。
将allowNull设置为false将向列添加NOT NULL,这意味着如果列为空,则在执行查询时会从DB中抛出错误。如果要在查询DB之前检查值是否不为空,请查看下面的验证部分。
title: { type: Sequelize.STRING, allowNull: false },
我想按照官方文档所述接收错误,但不知道我做错了什么。