我和我的团队将开发一些将与其他应用程序通信的应用程序,该应用程序的基本工作原理如下: 使用React构建的前端应用程序可与API通信。该API的工作方式是:我们每个客户都有一个单独的数据库,他们的用户将访问我们的前端应用程序,此应用程序将位于一个数据库中,该数据库包含有关其企业的信息,并将返回他们的一些连接信息。此后,每个用户将获得有关其企业的信息,我们的API将获取此信息并连接到数据库中并获取数据。我的问题是我不知道执行此操作的最佳方法(在企业x的用户连接后||后实例化每个请求中的数据源并断开连接后,当该企业中的活动用户||时,我将打开此连接)。其他解决方案)?我在这种情况下尝试使用lb4是错误的?
答案 0 :(得分:0)
My situation is similar to yours, my team is using `Mongodb` 4.x and I assume you are using it.
据我了解,您的麻烦是
DataSource
。DataSource
地址不变。Mongodb
您需要创建一个扩展了juggler.DataSource
的类,该类可以每次动态切换数据库,然后将inject
的类扩展到每个controller
中。
export declare class DataSource extends EventEmitter {
...
connector?: Connector; // <= can access `Mongodb Client` object
juggler.DataSource
扩展
export class MyClient extends juggler.DataSource {
constructor(
@config()
settings: Config = config
) {
super(settings);
}
public async db(dbName: string): Promise<Database> {
if (!this.connected) await this.connect();
// return the `Mongodb DB` object
return this.connector!.client.db(dbName);
}
}
MyClient
类并在控制器中使用
export class TestController {
constructor(
@inject('my-client')
private myClient: MyClient,
) { }
@post('/test')
async test(){
let db = await this.myClient.db('db-name');
let col = db.collection('col-name');
// ...
}
}