播种不同的数据,以延新不同环境。
#网络开发人员 #node #database #sequelize

续集是一个基于承诺的node.js orm,具有丰富的功能,可使数据库连接和管理简单简便

数据迁移和种子对于连接和管理数据库和应用程序信息很重要。

续集播种使得可以轻松填充数据库中的数据。对于应用程序成功操作所需的某些默认信息,例如角色,货币,用户类型等。

本教程源于我在工作场所所面临的挑战,试图在某些数据中播种一些以开发和质量保证环境(仅用于测试目的),而无需将相同的数据推向登台和生产环境。 /p>

我在这里讨论如何使用环境名称(在我的.env文件中定义)作为播种机文件夹中的子文件夹动态加载数据。

让我们开始

我假设您已经具有带有ES6语法的节点表达式设置。如果您没有,则可以在线搜索教程。

另外,我相信您已经在项目中使用播种机进行了续集。如果没有,请浏览此tutorial进行。

设置
预计您的应用程序中已经有一个.SequeLizerc文件。
第一步是进入您的播种机文件夹并为您拥有的不同环境创建子文件夹。
看一下我的播种机文件夹的样品结构

Seeders folder structure

从上图中,我在“播种机”文件夹中创建了不同的子文件夹名称:使用项目上存在的不同环境的名称作为子文件夹名称。即开发,质量检查,生产等。 (请注意,如果您不为任何环境创建子文件夹,则在第一个续集种子在该环境上运行,将创建该环境的播种机子折线)。

现在,将您的.SequeLizerc文件编辑到此


const dotenv = require('dotenv');
dotenv.config();
const path = require('path');


module.exports = {
  config: path.resolve('./database/config', 'config.js'),
  'models-path': path.resolve('./database/models'),
  'seeders-path': path.resolve(`./database/seeders/${process.env.NODE_ENV}`),
  'migrations-path': path.resolve('./database/migrations')
};

首先,我们导入并设置 dotenv模块 确保在续集时加载环境变量正在运行SEEDERS文件。


const dotenv = require('dotenv');
dotenv.config();

现在让我们专注于播种机路径

'seeders-path': path.resolve(`./database/seeders/${process.env.NODE_ENV}`),

在这里,我们指出了续集将文件拾取到环境名称的位置。


sequelize db:seed:all

最终,当我们在不同环境中运行上述代码时,只会插入该环境文件的数据。即,如果我们在开发环境中运行sequelize db:seed:all,quelize将在/database/seeders/development文件夹中运行播种机文件。

使用这种方法,可以在不同的应用环境中播种不同的数据。

注意(副作用)
当您使用quelize命令创建挤压种子时
sequelize seed:create --name currency-types
续集将仅在开发环境中创建种子文件。所以

因此,如果要为其他环境创建种子文件。 有两种方法可以做
1在开发文件夹中创建种子文件(像我们一样),然后将其移动/将其复制到Seeders子折叠器或
2将您的node_env更改为环境,运行创建种子脚本。

通过使用这种方法,非常重要的确保正确的环境变量值在 node_env 中设置为设置错误的值已经实时可以导致重复的数据

最后,本教程是在2021年撰写的,我决定在2023年底发布它,当时我找不到任何专门解决此问题的教程。此方法为我完成了工作,但是如果您找到一种更好的方法来处理不同环境的播种数据,请与我联系或在下面发表评论

Thanks for reading this 🤗

我是idris kelaniðä