使用sequelize的种子数据的不同目录

Dan*_*van 1 node.js sequelize.js

我想在开发和生产之间使用不同的种子数据。如何在配置中指定?我知道,.sequelizerc我可以加载动态配置文件并指定一个seeders-path

// .sequelizerc
const path = require('path')

module.exports = {
  "config": path.resolve('./app/config', 'config.json'),
   "models-path": path.resolve('./app/models'),
   "migrations-path": path.resolve('./app/migrations')
   "seeders-path": path.resolve('./app/seeders')
}
Run Code Online (Sandbox Code Playgroud)

和配置

// ./app/config/config.json
{
  "development": {
     // environment specific configuration
     ...
Run Code Online (Sandbox Code Playgroud)

是否可以seeders-path在动态配置中选择?还是我应该做出一些逻辑

"seeders-path": process.env.NODE_ENV === 'development'? 
  "seeders/development" :
  "seeders/production"
Run Code Online (Sandbox Code Playgroud)

max*_*m.u 5

您可以使用npm脚本,如下所示:

// package.json
"scripts": { 
    "sequelize:prod": "sequelize $* --seeders-path seeders/production", 
    "sequelize:dev": "sequelize $* --seeders-path seeders/development",
}
Run Code Online (Sandbox Code Playgroud)

或者您可以像这样直接传递配置:

// package.json
"scripts": {
    "sequelize:dev": "sequelize $* --config some/path/dev.js"
    "sequelize:prod": "sequelize $* --config some/path/prod.js"
}
Run Code Online (Sandbox Code Playgroud)

您可以传递以进行序列化的选项列表:

  1. --env 字符串在其中运行命令的环境
  2. --config 字符串配置文件的路径
  3. --options-path 字符串带有其他选项的JSON文件的路径
  4. --migrations-pat 字符串迁移文件夹的路径
  5. --seeders-path 字符串播种器文件夹的路径
  6. --models-path 字符串 models文件夹的路径
  7. --url 字符串要使用的数据库连接字符串。替代使用--config文件
  8. --debug bolean可用时显示各种调试信息bolean

在sequelize-cli中,源代码具有以下代码链接

function loadRCFile(optionsPath) {


const rcFile = optionsPath || path.resolve(process.cwd(), '.sequelizerc');
  const rcFileResolved = path.resolve(rcFile);
  return fs.existsSync(rcFileResolved)
    ? JSON.parse(JSON.stringify(require(rcFileResolved)))
    : {};
}

const args = yargs
  .config(loadRCFile(yargs.argv.optionsPath));
Run Code Online (Sandbox Code Playgroud)

因此,您可以加载“ .sequelizerc”之类的不同文件:

// package.json
"scripts": {
    "sequelize:dev": "sequelize $* --options-path some/path/dev.js"
    "sequelize:prod": "sequelize $* --options-path some/path/prod.js"
}

// some/path/dev.js
const path = require('path');

module.exports = {
   "config": path.resolve('./app/config', 'config.json'),
   "models-path": path.resolve('./app/models'),
   "migrations-path": path.resolve('./app/migrations')
   // here your development path to seeders
   "seeders-path": path.resolve('./app/seeders/development')
}

// some/path/prod.js
const path = require('path');

module.exports = {
   "config": path.resolve('./app/config', 'config.json'),
   "models-path": path.resolve('./app/models'),
   "migrations-path": path.resolve('./app/migrations')
   // here your development path to seeders
   "seeders-path": path.resolve('./app/seeders/production')
}
Run Code Online (Sandbox Code Playgroud)

但是您可以在一个种子目录中为不同的ENV创建种子。

可以说,我们有.sequelizerc

// .sequelizerc
const path = require('path')

module.exports = {
   "config": path.resolve('./app/config', 'config.json'),
   "models-path": path.resolve('./app/models'),
   "migrations-path": path.resolve('./app/migrations')
   "seeders-path": path.resolve('./app/seeders')
}
Run Code Online (Sandbox Code Playgroud)

创建播种机:

sequelize seed:generate --name create_users-dev.js
sequelize seed:generate --name create_users-prod.js
sequelize seed:generate --name create_users-whatever.js
Run Code Online (Sandbox Code Playgroud)

我们只运行dev播种机:

sequelize db:seed --seed `basename $(ls app/seeders/*-dev.js)`
Run Code Online (Sandbox Code Playgroud)

或产品播种机:

sequelize db:seed --seed `basename $(ls app/seeders/*-prod.js)`
Run Code Online (Sandbox Code Playgroud)

或只是用户开发播种机

sequelize db:seed --seed `basename $(ls app/seeders/*users-dev.js)`
Run Code Online (Sandbox Code Playgroud)

您可以选择要运行的播种机。

格式:

sequelize db:seed --seed <array>
sequelize db:seed --seed file1 file2 fileN
Run Code Online (Sandbox Code Playgroud)