nodejs sequelize / cli如何与node-config一起使用

时间:2015-07-19 09:59:44

标签: node.js sequelize.js 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'

使用标准的node-config json文件。

2 个答案:

答案 0 :(得分:3)

在用于节点配置的describe('FirebaseService', () => { let service: FirebaseService; const mockedData = [{ payload:{ doc:{ id:"zyx", data:()=>{ return {hello:"world"} } } }, },{ payload:{ doc:{ id:"abc", data:()=>{ return {hello:"goodbye"} } } } }] var insideCollection = jasmine.createSpyObj('collection', ['snapshotChanges']); var afSpy = jasmine.createSpyObj('AngularFirestore', ['collection']); afSpy.collection.and.returnValue(insideCollection); insideCollection.snapshotChanges.and.returnValue(of(mockedData)); // afSpy.pipe.and.returnValue(of(mockedData)) <-- .pipe is already a method on an Observable, no need for this. beforeEach(() => { TestBed.configureTestingModule({ providers:[ FirebaseService, { provide: AngularFirestore, useValue: afSpy } ] }) service = TestBed.get(FirebaseService); //get the testbed and set it so we can use it in our functions }); it('should return a sorted list', () => { service.sortedList('fakeCollection', 'id').subscribe(res=>{ expect(res).toEqual([{hello:"world", id:"zyx"}, {hello:"goodbye", id:"abc"}]) }) expect(insideCollection.snapshotChanges).toHaveBeenCalled(); }); }); 文件夹中,创建一个名为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

要使用环境变量,请像通常使用node-config一样使用{ "database": { "username": "root", "password": "", "database": "my_database", "host": "127.0.0.1", "dialect": "mysql" } }

答案 1 :(得分:1)

如果我正确理解了您的问题,您必须使用以下内容将.sequelizerc文件放在项目的根目录中:

var config = require('config');

config.database.config = __filename;

module.exports = config.database;

这会导出配置的database部分,由配置文件node-config组成,作为sequelize-cli配置。