我想在开发和生产之间使用相同的数据源名称(“ db”),但使用不同的连接器(用于dev的内存,用于生产的mongo)。
这是我当前的解决方法( db.datasource.ts ):
import { inject } from '@loopback/core';
import { juggler } from '@loopback/repository';
import * as configDevelopment from './db.datasource.json';
import * as configProduction from './db.datasource.production.json';
const config = process.env.NODE_ENV === 'production' ? configProduction : configDevelopment;
export class DbDataSource extends juggler.DataSource {
static dataSourceName = 'db';
constructor(
@inject('datasources.config.db', { optional: true })
dsConfig: object = config,
) {
super(dsConfig);
}
}
(我从CLI生成的默认值中唯一更改的是第3-5行)
当我更改NODE_ENV
并重新加载服务器并检查数据库的内容时,生产和开发之间没有任何区别。我什至没有在本地安装Mongo,但是加载Mongo配置文件似乎不会引发错误。将config
设置为{}
时,也没有看到错误。
db.datasource.ts 正在加载,并且正在加载正确的配置文件,但是前端似乎没有任何更改。无论我将localhost:3000/<whatever-endpoint>
设置为什么,都可以在config
看到相同的数据。
我是否还在找对地方?我以为自己在解决问题的正确方法上,因为我确实知道它是not supported officially。