forFeatureAsync()
を使用して、特定のスキーマのプラグインを登録することができます。 MongooseModule
のメソッド ファクトリプロバイダー(つまり、useFactory
。
公式ドキュメント の例に従います。 :
@Module({
imports: [
MongooseModule.forFeatureAsync([
{
name: Cat.name,
useFactory: () => {
const schema = CatsSchema;
schema.plugin(require('mongoose-autopopulate'));
return schema;
},
},
]),
],
})
export class AppModule {}
ただし、mongoose-sequence
プラグインネイティブのMongoose接続オブジェクトをプラグインの初期化に渡す必要があります。これは、getConnectionToken
を使用してファクトリプロバイダーに接続を挿入することで実現できます。 方法:
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 {}