如何使用knex.js防止种子在生产环境中运行?

时间:2019-04-15 21:13:00

标签: javascript database knex.js

我正在使用Knex.js来管理项目中的迁移和种子,并通过--env切换到单个命令来管理连接选项。

如何确保诸如knex seed:run之类的种子命令永远不会在生产环境中运行?

3 个答案:

答案 0 :(得分:2)

这是我的方法:

  1. 在开发中,请确保创建一个环境变量,例如“ APP_ENV = development”
  2. 在每个种子文件中,我放置:
if (process.env.APP_ENV !== "development") {
  console.error("Error: seeds can only be used in development");
  process.exit(1);
}

完成!

答案 1 :(得分:1)

例如,通过不使用种子或通过在每个种子的开头添加代码来检查knex客户端配置是否未指向dev数据库,它将引发错误。

knex中没有内置功能可以阻止这种情况。

答案 2 :(得分:1)

我通过给它提供一个不存在的种子目录来解决了这个问题。如果然后在生产中运行,它将崩溃并显示no such file or directory

下面是我的knexfile.js

module.exports = {
  ...,
  production: {
    client: 'pg',
    connection: ...,
    seeds: {
      directory: 'you-are-not-able-to-run-seeds-in-production'
    }
  }
}