【问题标题】:sequelize migration not work properly续集迁移无法正常工作
【发布时间】:2018-07-10 13:20:07
【问题描述】:

config.json 文件是sequelize 中的数据库连接文件。在我的项目 config.json 文件中有一组数据库

config.json 看起来像:

{ 
  "TEST_CS": {
    "development": {
      "username": "root",
      "password": "password",
      "database": "databaseOne",
      "host": "localhost",
      "port": "3306",
      "logging": true,
      "dialect": "mysql"
    },
    "test": {
      "dialect": "sqlite",
      "storage": ":memory:"
    },
    "production": {
      "username": "root",
      "password": "password",
      "database": "databaseTwo",
      "host": "localhost",
      "dialect": "mysql"
    }
  },
    "CS_SERVER": {
    "development": {
      "username": "root",
      "password": "password",
      "database": "My_db",
      "host": "localhost",
      "port": "3306",
      "logging": true,
      "dialect": "mysql"
    },
    "test": {
      "dialect": "sqlite",
      "storage": ":memory:"
    },
    "production": {
      "username": "root",
      "password": "password",
      "database": "databaseFour",
      "host": "localhost",
      "dialect": "mysql"
    }
   }

}

抛出以下错误:

已加载配置文件“models\config\config.json”。

错误:从 v4.0.0 开始需要明确提供方言

但是当我删除 config.json 文件中的 json 对象时。迁移正确完成

{ 
  //Remove CS_SERVER object
    "development": {
      "username": "root",
      "password": "password",
      "database": "My_db",
      "host": "localhost",
      "port": "3306",
      "logging": true,
      "dialect": "mysql"
    },
    "test": {
      "dialect": "sqlite",
      "storage": ":memory:"
    },
    "production": {
      "username": "root",
      "password": "password",
      "database": "database_production",
      "host": "localhost",
      "dialect": "mysql"
    }

}

如何在sequelize迁移中访问config.json文件中的json数组

【问题讨论】:

  • 你能分享你与数据库建立连接的代码,即你在哪里使用这个文件吗?
  • 在模型文件夹中**config文件(在配置文件“config.json”中)**CS_SERVER文件**迁移文件**TEST_CS文件**index.js(主sequelize文件)
  • 请在您初始化 sequelize 的地方发布 index.js 的代码

标签: node.js sequelize.js


【解决方案1】:

在建立连接时只需要这个对象

{
  "username": "root",
  "password": "password",
  "database": "My_db",
  "host": "localhost",
  "port": "3306",
  "logging": true,
  "dialect": "mysql"
}

开发、测试和生产是关键,用于根据环境变量进行选择。

但是,如果您使用的是 TEST_CS 或 CS_SERVER,那么在进行这样的连接时,您必须手动传递这些密钥。

let config    = require('../serverconfig/config.json')['CS_SERVER'][env];
let sequelize = new Sequelize(config.database, config.username, config.password, config);

【讨论】:

  • 谢谢拉胡尔。但是.sequelizerc文件默认调用config.json文件中的开发键。
猜你喜欢
  • 2016-12-18
  • 2017-10-05
  • 2020-03-15
  • 2018-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多