MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Sequenza di incremento automatico in NestJs/Mongoose

È possibile registrare un plug-in per un determinato schema utilizzando forFeatureAsync() metodo del MongooseModule insieme a un fornitore di fabbrica (ad esempio, useFactory ).

Seguendo l'esempio della documentazione ufficiale :

@Module({
  imports: [
    MongooseModule.forFeatureAsync([
      {
        name: Cat.name,
        useFactory: () => {
          const schema = CatsSchema;
          schema.plugin(require('mongoose-autopopulate'));
          return schema;
        },
      },
    ]),
  ],
})
export class AppModule {}

Tuttavia con la mongoose-sequence plugin è necessario passare l'oggetto di connessione Mongoose nativo all'inizializzazione del plugin. Ciò può essere ottenuto iniettando la connessione nel provider di fabbrica con il getConnectionToken metodo:

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 {}