如何动态更改 Mongoose 提供程序中的集合或数据库的名称,Nestjs?
Posted
技术标签:
【中文标题】如何动态更改 Mongoose 提供程序中的集合或数据库的名称,Nestjs?【英文标题】:How to change the name of a collection or db in a Mongoose provider dynamically, Nestjs? 【发布时间】:2019-08-22 12:01:19 【问题描述】:我需要更改我的查询在 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>,
谢谢,感谢您的帮助
【问题讨论】:
你用的是什么版本的nestjs? Nestjs 5.4.x :) 【参考方案1】:我对Nestjs不熟悉,但我认为你应该在运行时初始化集合模型,而不是直接在provider中创建
provide: 'TestModelToken',
useFactory: (connection: Connection) =>
getTestModel(version: string) => connection.model('Test', FilterSchema, `tests_$version`),
inject: ['DbConnectionToken'],
,
【讨论】:
当然,但是在我的用例中,我不知道先验或之前的集合,所以我必须动态更改它以上是关于如何动态更改 Mongoose 提供程序中的集合或数据库的名称,Nestjs?的主要内容,如果未能解决你的问题,请参考以下文章