nodejs sequelize / cli как использовать с node-config

Во-первых, я впервые работаю с Sequelize, так что наберитесь терпения.

Я хочу использовать https://github.com/sequelize/cli вместе с https://github.com/lorenwest/node-config

Я хочу, чтобы sequelize мог «составлять» свою конфигурацию из нескольких исходных файлов так же, как это делает node-config.

К настоящему времени я разобрался с

.sequelizerc

var path = require('path')
var Config = require('config');
var env =Config.util.getEnv('NODE_ENV');
module.exports = {
  'config':          path.resolve('config', env + '.json')
}

development.json ie

{
    "app": {
        "name": "my api"
    },
    "server": {
        "port": 8081
    },
    "development": {
            "username": "username",
            "password": "password",
            "database": "database",
            "host": "127.0.0.1",
            "dialect": "mysql"
    }
} 

Вы можете видеть, что мне нужно установить избыточный ключ env без логического смысла во всех моих файлах env.json.

Есть ли способ лучше ?

недостаток

Чтобы получить данные:

var env =Config.util.getEnv('NODE_ENV');
var configDb = Config.get(env);

и таким образом теряются все параметры порядка загрузки файлов.

https://github.com/lorenwest/node-config/wiki/Configuration-Files

Другой путь

sequelize db:migrate --url 'mysql://root:password@mysql_host.com/database_name'

со стандартными json-файлами конфигурации узла.


person Whisher    schedule 19.07.2015    source источник
comment
Как вы думаете, этот вопрос можно прочитать? Что в этом есть смысл?   -  person Amit    schedule 19.07.2015
comment
@Amit Я обновил свой вопрос.   -  person Whisher    schedule 19.07.2015
comment
так вы хотите, чтобы sequelize мог составлять свою конфигурацию из нескольких исходных файлов так же, как это делает node-config?   -  person Amit    schedule 19.07.2015
comment
@Amit, не мог бы я найти слова получше :) Я отредактировал свой вопрос. Спасибо   -  person Whisher    schedule 19.07.2015


Ответы (2)


В папке config для node-config создайте файл с именем config.js

// config/config.js
const config = require('config');

module.exports = {
  [process.env.NODE_ENV || 'development']: config.database
};

Затем создайте .sequelizerc на верхнем уровне проекта.

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

module.exports = {
 config: path.resolve('config', 'config.js')
};

Пример config/development.json

{
  "database": {
    "username": "root",
    "password": "",
    "database": "my_database",
    "host": "127.0.0.1",
    "dialect": "mysql"
  }
}

Чтобы использовать env var, используйте custom-environment-variables.json, как обычно с node-config.

person type    schedule 11.12.2018
comment
Я использую файлы custom-environment-variables.json, но определенные в них свойства не отображаются в config.js .. Не могли бы вы помочь мне узнать, что происходит? - person Liana; 19.06.2020
comment
@Liana, можешь показать мне, как выглядит структура проекта? Структура каталогов, которую вы должны иметь, похожа на ./config/ ./config/custom-environment-variables.json ./config/config.js (продолжение магии, используйте код в моем ответе) ./.sequelizerc (не забудьте., Используйте код, который я ввел в свой ответ) - person type; 20.06.2020
comment
Я решил проблему, добавив dotenv в начало моего файла config.js. Спасибо. - person Liana; 21.06.2020

Если я правильно понял ваш вопрос, вы должны поместить .sequelizerc файл в корень вашего проекта с таким содержимым:

var config = require('config');

config.database.config = __filename;

module.exports = config.database;

Это экспортирует database раздел вашей конфигурации, составленный из файлов конфигурации node-config как sequelize-cli config.

person Max    schedule 02.09.2015