#node.js #angular #typescript #mongoose #nestjs
#node.js #angular #typescript #mongoose #nestjs
Вопрос:
Мне нужно было бы изменить направление моих запросов в приложении Nestjs.
Я работаю в приложении Angular с версиями, поэтому мне приходится динамически изменять коллекции или даже базы данных в моем бэкэнде с помощью Mongoose и Nestjs.
Я полагаю, мне нужно изменить target в поставщике и попытаться изменить его динамически в зависимости от того, какую версию пользователь выбрал спереди.
В любом случае у меня есть что-то вроде
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. какую версию nestjs вы используете?
2. Nestjs 5.4.x 🙂
Ответ №1:
Я не знаком с Nestjs, но я думаю, что вам следует инициализировать модель коллекции во время выполнения, а не создавать ее непосредственно в provider
{
provide: 'TestModelToken',
useFactory: (connection: Connection) => {
getTestModel(version: string) => connection.model('Test', FilterSchema, `tests_${version}`),
}
inject: ['DbConnectionToken'],
},
Комментарии:
1. Безусловно, однако в моем случае использования я не знаю коллекцию априори или раньше, поэтому я должен изменять ее динамически