【发布时间】:2023-03-20 07:22:01
【问题描述】:
我正在将一个 NodeJs 项目迁移到 NestJs,该项目使用 MongoDB 作为后端数据库,使用 Mongoose 作为 ODM。我使用 mongoose-sequence 插件来处理自动增量序列,但是我遇到了需要 NestJs 下的库的麻烦。
mongoose-sequence 文档解释了如何使用 CommonJS 语法导入库,如下所示:
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);
但是由于 NestJs 使用依赖注入,访问原生连接并不是那么直接。根据documentation to integrate MongoDB using Mongoose 访问本机Mongoose Connection 对象可以使用@InjectConnection() 装饰器完成,如下所示:
@Injectable()
export class CatsService {
constructor(@InjectConnection() private connection: Connection) {}
}
但由于 TypeScript decorators 只能附加到类声明、方法、访问器、属性或参数,我看不到如何注入连接,需要插件并在我的 Schema 类上初始化它。
【问题讨论】:
标签: node.js mongodb mongoose nestjs mongoose-sequence