首先,这是我第一次使用Sequelize,所以请耐心等待。
我想使用https://github.com/sequelize/cli 以及https://github.com/lorenwest/node-config
我希望sequelize能够从多个源文件“组合”它的配置,就像node-config一样。
到目前为止,我已经用
解决了这个问题var path = require('path')
var Config = require('config');
var env =Config.util.getEnv('NODE_ENV');
module.exports = {
'config': path.resolve('config', env + '.json')
}
{
"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文件。
答案 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配置。