Я переношу проект NodeJs на Nest Js, этот проект использует MongoDB в качестве внутренней базы данных и Mon goose как ODM. Я использовал плагин mon goose -sequence для обработки последовательностей автоинкремента, однако у меня возникли проблемы, требующие библиотеки под Nest Js.
Mon goose -sequence в документации объясняется, как импортировать библиотеку с использованием синтаксиса Common JS следующим образом:
const mongoose = require('mongoose')
const AutoIncrementFactory = require('mongoose-sequence');
const connection = await mongoose.createConnection('mongodb://...');
const AutoIncrement = AutoIncrementFactory(connection);
Используя синтаксис импорта ES6, это будет примерно так:
import * as mongoose from 'mongoose';
import * as AutoIncrementFactory from 'mongoose-sequence';
const connection = ...;
const AutoIncrement = AutoIncrementFactory(connection);
Однако, поскольку Nest Js использует Dependency Injection, доступ к собственному соединению не такой прямой. Согласно документации для интеграции MongoDB с использованием Mon goose доступ к собственному объекту Mon goose Connection можно выполнить с помощью декоратора @InjectConnection()
следующим образом:
@Injectable()
export class CatsService {
constructor(@InjectConnection() private connection: Connection) {}
}
Но поскольку Декораторы TypeScript могут быть прикреплены только к объявлению класса, методу, инструменту доступа, свойству или параметру. Я не понимаю, как внедрить соединение, требовать плагин и инициализировать его в моих классах схемы.