Nestjs,如何动态更改Mongoose提供程序中的集合或数据库的名称?

时间:2019-04-01 10:36:43

标签: node.js angular typescript mongoose nestjs

我需要更改我的查询在Nestjs应用中指向的位置。

我正在使用具有版本的Angular应用程序,因此我必须使用Mongoose和Nestjs在后端动态更改集合甚至数据库。

我想我必须在提供者中更改目标,并尝试根据用户在前面选择的版本来动态更改它。

无论如何我都喜欢

import { Connection } from 'mongoose';
import { TestSchema } from './schemas/test.schema';
    export const testProviders = [
  {
    provide: 'TestModelToken',
    useFactory: (connection: Connection) =>
      connection.model('Test', FilterSchema, 'tests'),

    inject: ['DbConnectionToken'],
  },
];

例如,稍后,我想将其更改为动态指向此集合

tests_24_04_2019

我的服务看起来像

@Injectable()
export class TestsService {
  constructor(
    @Inject("TestModelToken") private readonly testModel: Model<Test>,

谢谢,感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我不熟悉Nestjs,但我认为您应该在运行时初始化集合模型,而不是直接在提供程序中创建

 {
    provide: 'TestModelToken',
    useFactory: (connection: Connection) => {
        getTestModel(version: string) => connection.model('Test', FilterSchema, `tests_${version}`),
    }
    inject: ['DbConnectionToken'],
 },