简介
seeder-foreign-keys 是一款 npm 包,它能够在数据库中添加外键关系,使得 Seed 数据库更容易,而且更加符合关系数据库的设计理念。
在 Seed 数据库的时候,我们经常需要怎样做到添加相关数据,或者添加关联数据。这时候,如果数据库中有关系,则需要先插入主表数据,然后插入关联表数据。但是这样的方式在 Seed 数据库的时候可能带来一些困难,因为如果主表数据还不存在,无法插入关联数据。
seeder-foreign-keys 就解决了这个问题,它能够在插入数据时自动添加外键关系,避免了手动插入主表数据的麻烦。
安装
seeder-foreign-keys 是一款 npm 包,可以使用以下命令进行安装:
npm install --save-dev seeder-foreign-keys
用法
假设我们需要 Seed 数据库中的 users 和 orders 表,其中 orders 表包含了 user_id 作为外键关联 users 表。
users 表定义
CREATE TABLE IF NOT EXISTS users ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(50) NOT NULL, PRIMARY KEY (`id`) );
orders 表定义
CREATE TABLE IF NOT EXISTS orders ( `id` INT(11) NOT NULL AUTO_INCREMENT, `user_id` INT(11) NOT NULL, `product` VARCHAR(50) NOT NULL, PRIMARY KEY (`id`), FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE );
1. 初始化 seeder-foreign-keys
在 Seed 数据库的前面引入库并初始化,如下:
const seederForeignKeys = require('seeder-foreign-keys'); const sequelize = require('../config/db'); const faker = require('faker'); seederForeignKeys.init({ sequelize, faker });
注意,这里需要提供一个 sequelize 实例。
2. 添加 Seeder 文件
在 Seeder 文件中,我们可以调用 seeder-foreign-keys 提供的方法来插入数据库中的数据,如下:
-- -------------------- ---- ------- ----- ----------------- - ------------------------------- ----- - ----- ----- - - ------------------------- -------------- - - --- ----- ---------------- ---------- -- - ----- ----- - ----- --------------- -- ------------- --- -- - ------- - ----- ------ - ----- -------------------------------------- - - ------- ------------ -------- -------- -- -- - ------- ------------ -------- -------- -- - --- --------------------- ---------------- ---------- -- ----- ----- ---------------- ---------- -- - ----- ------------------------------------- - --
注意,这里需要调用 seederForeignKeys.bulkCreate 方法来插入数据,而不是使用 sequelize 提供的 bulkCreate 方法。
3. 运行 Seeder
现在,我们可以运行 Seeder 文件来初始化数据库了。
npx sequelize-cli db:seed --seed 20220119150942-add-orders.js
这样,我们就成功地使用了 seeder-foreign-keys 来插入了包含外键关系的数据,而不需要手动插入主表数据。
指导意义
seeder-foreign-keys 的使用教程虽然简单,但是对于前端开发者来说却有非常重要的意义。使用 seeder-foreign-keys 可以帮助我们在 Seed 数据库时更加方便地插入数据,而不需要手动插入主表数据,从而提高了开发效率,减少了代码量,并且更加贴近了关系数据库的设计理念。对于需要大量使用 Seed 数据库的项目来说,这是一款非常值得推荐的 npm 包。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/seeder-foreign-keys