MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Sequência de incremento automático em NestJs/Mongoose


É possível registrar um plugin para um determinado esquema usando o forFeatureAsync() método do MongooseModule juntamente com um provedor de fábrica (ou seja, useFactory ).

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

No entanto, com a mongoose-sequence plugin é necessário passar o objeto de conexão nativo do Mongoose para a inicialização do plugin. Isso pode ser feito injetando a conexão no provedor de fábrica com o getConnectionToken método:
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 {}