Có thể đăng ký một plugin cho một lược đồ nhất định bằng cách sử dụng forFeatureAsync()
phương thức của MongooseModule
cùng với nhà cung cấp nhà máy (tức là useFactory
).
Làm theo ví dụ từ tài liệu chính thức :
@Module({
imports: [
MongooseModule.forFeatureAsync([
{
name: Cat.name,
useFactory: () => {
const schema = CatsSchema;
schema.plugin(require('mongoose-autopopulate'));
return schema;
},
},
]),
],
})
export class AppModule {}
Tuy nhiên với mongoose-sequence
plugin cần phải chuyển đối tượng kết nối Mongoose bản địa đến quá trình khởi tạo plugin. Điều này có thể đạt được bằng cách đưa kết nối vào nhà cung cấp của nhà máy với getConnectionToken
phương pháp:
import {getConnectionToken, MongooseModule} from '@nestjs/mongoose';
import * as AutoIncrementFactory from 'mongoose-sequence';
@Module({
imports: [
MongooseModule.forFeatureAsync([
{
name: Cat.name,
useFactory: async (connection: Connection) => {
const schema = CatsSchema;
const AutoIncrement = AutoIncrementFactory(connection);
schema.plugin(AutoIncrement, {inc_field: 'id'});
return schema;
},
inject: [getConnectionToken('YOUR_CONNECTION_NAME')],
},
]),
],
})
export class AppModule {}