使用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字段似乎不起作用。

解决方法

也尝试将新列添加到模型文件中,并指定属性选项。

顺便说一句-我总是关闭严格模式,因为它给了我奇怪的问题。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...