MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Automatische Inkrementsequenz in NestJs/Mongoose

Es ist möglich, ein Plugin für ein bestimmtes Schema mit forFeatureAsync() zu registrieren Methode des MongooseModule zusammen mit einem Fabrikanbieter (d. h. useFactory ).

Folgen Sie dem Beispiel aus der offiziellen Dokumentation :

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

Allerdings mit der mongoose-sequence Plugin ist es notwendig, das native Mongoose-Verbindungsobjekt an die Plugin-Initialisierung zu übergeben. Dies kann erreicht werden, indem die Verbindung mit dem getConnectionToken in den Factory-Provider eingefügt wird Methode:

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