sql >> Base de Datos >  >> NoSQL >> MongoDB

Secuencia de incremento automático en NestJs/Mongoose

Es posible registrar un complemento para un esquema dado usando forFeatureAsync() método del MongooseModule junto con un proveedor de fábrica (es decir, useFactory ).

Siguiendo el ejemplo de la documentación oficial :

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

Sin embargo, con mongoose-sequence complemento es necesario pasar el objeto de conexión Mongoose nativo a la inicialización del complemento. Esto se puede lograr inyectando la conexión en el proveedor de fábrica con 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 {}