如何解决使用Sequelize迁移的数据库字段的默认值
这是我尝试使用sequelize完成此简单任务的第三天,但我却很难。
我要创建的表包含两个字段:
- id(类型:int)
- publicId(类型:uuid)
id字段是主键,自动递增等。
publicId字段应为UUID类型,其值应由“ defaultValue”属性自动 自动 生成。
创建表时,我在创建模型或迁移文件时尝试了各种组合。同步也不是问题,因为每次我删除数据库容器时,都会生成一个新的容器并再次迁移。
我正在使用sequelize-cli v5.5.1,但我也尝试了v6.2。
代码:
(迁移文件)
'use strict';
module.exports = {
up: (queryInterface,Sequelize) => {
return queryInterface.createTable('orders',{
id: {
allowNull: false,autoIncrement: true,primaryKey: true,type: Sequelize.INTEGER
},publicId: {
type: Sequelize.UUID,allowNull: false,unique: true,defaultValue: Sequelize.UUIDV4,}
});
},down: (queryInterface,Sequelize) => {
return queryInterface.dropTable('orders');
}
};
模型文件:
'use strict';
module.exports = (sequelize,DataTypes) => {
const order = sequelize.define('order',{
},{});
order.associate = function(models) {
// associations can be defined here
};
return order;
};
迁移已成功运行,但是只有“ id”字段设置了默认值。 publicId字段仅具有非null约束,并且不会创建默认值。
我尝试了许多其他方法,例如将一个函数设置为返回uuid的defaultValue,已经尝试过Sequelize.fn('uuid_generate_v4')
等。.defaultValues字段似乎不起作用。
解决方法
也尝试将新列添加到模型文件中,并指定属性选项。
顺便说一句-我总是关闭严格模式,因为它给了我奇怪的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。