乐闻世界logo
搜索文章和话题

How to set primary key type to UUID via Sequelize CLI

2 个月前提问
2 个月前修改
浏览次数24

1个答案

1

在使用Sequelize CLI时,如果要将主键类型设置为UUID,可以遵循以下步骤:

1. 安装依赖

确保您已经安装了 Sequelize 和对应的数据库驱动(如 pg, mysql 等),以及 Sequelize CLI。如果尚未安装,可以通过以下命令来进行安装:

bash
npm install sequelize sequelize-cli npm install pg # 以 PostgreSQL 为例

2. 初始化 Sequelize

在项目目录中,执行以下命令来初始化 Sequelize:

bash
npx sequelize-cli init

这将创建相应的配置文件和目录,包括 modelsmigrationsseedersconfig 目录。

3. 创建模型

使用 Sequelize CLI 创建一个新的模型,并指定主键为 UUID 类型。假设我们要创建一个名为 User 的模型,可以使用以下命令:

bash
npx sequelize-cli model:generate --name User --attributes id:UUID,name:string

这个命令会在 models 目录下生成一个 user.js 的模型文件。打开这个文件,我们需要手动修改模型定义,以确保 id 字段被正确地设置为 UUID 主键。

4. 修改模型定义

修改 models/user.js 文件中的模型定义如下:

javascript
'use strict'; const { Model, DataTypes } = require('sequelize'); module.exports = (sequelize) => { class User extends Model {} User.init({ id: { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, primaryKey: true, allowNull: false }, name: DataTypes.STRING }, { sequelize, modelName: 'User', }); return User; };

在这里,我们将 id 字段的类型指定为 DataTypes.UUID,并设置默认值为 DataTypes.UUIDV4,这意味着每次创建新记录时,如果未指定 id,Sequelize 将自动为其生成一个 UUIDv4。

5. 创建迁移

创建迁移文件以反映这些更改到数据库。可以手动创建或修改由 Sequelize CLI 自动生成的迁移文件,确保 id 字段类型正确设置:

javascript
'use strict'; module.exports = { async up(queryInterface, Sequelize) { await queryInterface.createTable('Users', { id: { type: Sequelize.UUID, defaultValue: Sequelize.UUIDV4, primaryKey: true, allowNull: false }, name: { type: Sequelize.STRING } }); }, async down(queryInterface, Sequelize) { await queryInterface.dropTable('Users'); } };

6. 执行迁移

完成模型和迁移文件的修改后,通过以下命令应用迁移到数据库:

bash
npx sequelize-cli db:migrate

7. 测试

最后,确保一切正常工作,可以在项目中添加一些测试代码来创建和查询 User 实例,验证 id 是否正确设置为 UUID。

通过以上步骤,我们成功地将 Sequelize CLI 中的主键类型设置为 UUID。这样的设置在需要确保全局唯一性,如在分布式系统中时非常有用。

2024年7月24日 17:14 回复

你的答案