这是我尝试使用 sequelize 完成这个简单任务的第三天,但我真的很难做到。
我想要的只是创建一个包含两个字段的表:
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 字段只有非空约束,没有创建默认值。我已经尝试了许多其他方法,比如将一个函数设置为返回 uuid 的 defaultValue,已经尝试过
Sequelize.fn('uuid_generate_v4')
等等。 defaultValues 字段似乎不起作用。
最佳答案
也尝试将新列添加到模型文件中,并指定属性选项。
顺便说一句——我总是关闭严格模式,因为它给了我一些奇怪的问题。
关于sequelize.js - 使用 Sequelize 迁移的数据库字段的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63361253/