Il est possible d'enregistrer un plugin pour un schéma donné en utilisant le forFeatureAsync()
méthode du MongooseModule
avec un fournisseur d'usine (par exemple, useFactory
).
En suivant l'exemple de la documentation officielle :
@Module({
imports: [
MongooseModule.forFeatureAsync([
{
name: Cat.name,
useFactory: () => {
const schema = CatsSchema;
schema.plugin(require('mongoose-autopopulate'));
return schema;
},
},
]),
],
})
export class AppModule {}
Cependant avec la mongoose-sequence
plugin, il est nécessaire de passer l'objet de connexion natif Mongoose à l'initialisation du plugin. Ceci peut être réalisé en injectant la connexion dans le fournisseur d'usine avec le getConnectionToken
méthode :
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 {}