我需要更改我的查询在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>,
谢谢,感谢您的帮助
答案 0 :(得分:0)
我不熟悉Nestjs,但我认为您应该在运行时初始化集合模型,而不是直接在提供程序中创建
{
provide: 'TestModelToken',
useFactory: (connection: Connection) => {
getTestModel(version: string) => connection.model('Test', FilterSchema, `tests_${version}`),
}
inject: ['DbConnectionToken'],
},