Bra*_*mmz 4 mysql node.js sequelize.js
我目前正在我的 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
}
});
Run Code Online (Sandbox Code Playgroud)
结果表如下所示:
`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`)
)
Run Code Online (Sandbox Code Playgroud)
当我使用 Model.create({})(括号内没有任何内容)向数据库添加条目时,以下对象将添加到数据库中:
id email firstName lastName createdAt updatedAt
1 '' NULL NULL 2019-05-21 15:33:13 2019-05-21 15:33:13
Run Code Online (Sandbox Code Playgroud)
我的数据库中的每个 NOT NULL 列都有一个默认值(varchar 为空字符串,布尔值为 false,日期时间为 NOW())。
Sequelize.js 文档声明如下:
将allowNull 设置为false 将向该列添加NOT NULL,这意味着如果该列为空,则在执行查询时将从数据库抛出错误。如果您想在查询数据库之前检查某个值是否为空,请查看下面的验证部分。
标题:{ 类型:Sequelize.STRING,allowNull:false },
我想收到官方文档中所述的错误,但不知道我做错了什么。
我解决了这个问题。
我不得不将 allowNull 添加到模型定义中。这在第一次尝试时给出了一些声明问题,但是现在在重新审视它起作用的问题后,我得到了正确的错误。
module.exports = (sequelize, DataTypes) => {
const Persons = sequelize.define('Persons', {
email: {
type: DataTypes.STRING(100),
allowNull: false
},
firstName: DataTypes.STRING(40),
lastName: DataTypes.STRING(40)
}, {});
return Persons;
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12291 次 |
最近记录: |