0

I am attempting to utilize the plugin 'mongoose-sequence' with my NestJS application. I wish for this plugin to be useable by all the modules I will be creating for this application. Here's my app.module.ts:

import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { UsersModule } from './user/user.module';
import AutoIncrementFactory from 'mongoose-sequence';

const mongoUri = 'mongodb://localhost/apptest';
const connName = 'apptest';

@Module({
  imports: [
    MongooseModule.forRoot(mongoUri, {
      connectionName: connName,
      useFindAndModify: false, 
      connectionFactory: (connection, connName) => {
        const AutoIncrement = AutoIncrementFactory(connection);
        connection.plugin(AutoIncrement);
        return connection;
      }),
      UserModule,
    ],
    controllers: [],
    providers: [],
});
export class AppModule {}

When I start the server, I get the following error message:

Found 0 errors. Watching for file changes.

[Nest] 372   - 07/21/2020, 11:38:48 AM   [NestFactory] Starting Nest application...
[Nest] 372   - 07/21/2020, 11:38:48 AM   [MongooseModule] Unable to connect to the database. Retrying (1)... +35ms
[Nest] 372   - 07/21/2020, 11:38:48 AM   [InstanceLoader] MongooseModule dependencies initialized +1ms
[Nest] 372   - 07/21/2020, 11:38:48 AM   [InstanceLoader] AuthModule dependencies initialized +0ms
[Nest] 372   - 07/21/2020, 11:38:48 AM   [InstanceLoader] AppModule dependencies initialized +1ms
[Nest] 372   - 07/21/2020, 11:38:51 AM   [MongooseModule] Unable to connect to the database. Retrying (2)... +3005ms
[Nest] 372   - 07/21/2020, 11:38:54 AM   [MongooseModule] Unable to connect to the database. Retrying (3)... +3006ms
[Nest] 372   - 07/21/2020, 11:38:57 AM   [MongooseModule] Unable to connect to the database. Retrying (4)... +3007ms
[Nest] 372   - 07/21/2020, 11:39:00 AM   [MongooseModule] Unable to connect to the database. Retrying (5)... +3007ms
[Nest] 372   - 07/21/2020, 11:39:03 AM   [MongooseModule] Unable to connect to the database. Retrying (6)... +3006ms
[Nest] 372   - 07/21/2020, 11:39:06 AM   [MongooseModule] Unable to connect to the database. Retrying (7)... +3006ms
[Nest] 372   - 07/21/2020, 11:39:09 AM   [MongooseModule] Unable to connect to the database. Retrying (8)... +3003ms
[Nest] 372   - 07/21/2020, 11:39:12 AM   [MongooseModule] Unable to connect to the database. Retrying (9)... +3005ms
[Nest] 372   - 07/21/2020, 11:39:12 AM   [ExceptionHandler] mongoose_sequence_1.default is not a function +1ms
TypeError: mongoose_sequence_1.default is not a function
    at connectionFactory (/Users/tbruner/dev/s4n3/dist/app.module.js:31:70)
    at Function.<anonymous> (/Users/tbruner/dev/s4n3/node_modules/@nestjs/mongoose/dist/mongoose-core.module.js:59:28)
    at Generator.next (<anonymous>)
    at /Users/tbruner/dev/s4n3/node_modules/@nestjs/mongoose/dist/mongoose-core.module.js:20:71
    at new Promise (<anonymous>)
    at __awaiter (/Users/tbruner/dev/s4n3/node_modules/@nestjs/mongoose/dist/mongoose-core.module.js:16:12)
    at /Users/tbruner/dev/s4n3/node_modules/@nestjs/mongoose/dist/mongoose-core.module.js:58:49
    at Observable._subscribe (/Users/tbruner/dev/s4n3/node_modules/rxjs/internal/observable/defer.js:10:21)
    at Observable._trySubscribe (/Users/tbruner/dev/s4n3/node_modules/rxjs/internal/Observable.js:44:25)
    at Observable.subscribe (/Users/tbruner/dev/s4n3/node_modules/rxjs/internal/Observable.js:30:22)
    at RetryWhenSubscriber.notifyNext (/Users/tbruner/dev/s4n3/node_modules/rxjs/internal/operators/retryWhen.js:85:21)
    at InnerSubscriber._next (/Users/tbruner/dev/s4n3/node_modules/rxjs/internal/InnerSubscriber.js:28:21)
    at InnerSubscriber.Subscriber.next (/Users/tbruner/dev/s4n3/node_modules/rxjs/internal/Subscriber.js:66:18)
    at Notification.observe (/Users/tbruner/dev/s4n3/node_modules/rxjs/internal/Notification.js:22:50)
    at AsyncAction.DelaySubscriber.dispatch (/Users/tbruner/dev/s4n3/node_modules/rxjs/internal/operators/delay.js:54:40)
    at AsyncAction._execute (/Users/tbruner/dev/s4n3/node_modules/rxjs/internal/scheduler/AsyncAction.js:71:18)

Any ideas, why plugin is unable to connect to the mongodb? The mongodb is running and I connect to it via mongo client, and when I remove the const AutoIncrement... and the connection.plugin(... lines.

UPDATE: Changing the import of the AutoIncrementFactory to: import AutoIncrementFactory = require('mongoose-sequence'); produces an maximum call stat size exceeded:

UPDATE 2: made recommended change below, and same error.

[Nest] 68822   - 07/22/2020, 9:12:20 AM   [NestFactory] Starting Nest application...
[Nest] 68822   - 07/22/2020, 9:12:20 AM   [InstanceLoader] MongooseModule dependencies initialized +30ms
[Nest] 68822   - 07/22/2020, 9:12:20 AM   [InstanceLoader] AuthModule dependencies initialized +0ms
[Nest] 68822   - 07/22/2020, 9:12:20 AM   [InstanceLoader] AppModule dependencies initialized +0ms
[Nest] 68822   - 07/22/2020, 9:12:20 AM   [InstanceLoader] MongooseCoreModule dependencies initialized +11ms
[Nest] 68822   - 07/22/2020, 9:12:21 AM   [ExceptionHandler] Maximum call stack size exceeded +310ms
RangeError: Maximum call stack size exceeded
    at Object.clone (/Users/tbruner/dev/s4n3/node_modules/mongoose/lib/helpers/clone.js:53:16)
    at Schema.path (/Users/tbruner/dev/s4n3/node_modules/mongoose/lib/schema.js:678:24)
    at Schema.add (/Users/tbruner/dev/s4n3/node_modules/mongoose/lib/schema.js:519:14)
    at new Schema (/Users/tbruner/dev/s4n3/node_modules/mongoose/lib/schema.js:130:10)
    at Mongoose.Schema (/Users/tbruner/dev/s4n3/node_modules/mongoose/lib/schema.js:95:12)
    at SequenceFactory.Sequence._createCounterModel (/Users/tbruner/dev/s4n3/node_modules/mongoose-sequence/lib/sequence.js:170:36)
    at SequenceFactory.Sequence.enable (/Users/tbruner/dev/s4n3/node_modules/mongoose-sequence/lib/sequence.js:103:31)
    at SequenceFactory.Sequence.getInstance (/Users/tbruner/dev/s4n3/node_modules/mongoose-sequence/lib/sequence.js:92:14)
    at Schema.plugin (/Users/tbruner/dev/s4n3/node_modules/mongoose/lib/schema.js:1500:3)
    at applyPlugins (/Users/tbruner/dev/s4n3/node_modules/mongoose/lib/helpers/schema/applyPlugins.js:11:14)
    at NativeConnection.Connection.model (/Users/tbruner/dev/s4n3/node_modules/mongoose/lib/connection.js:1070:5)
    at SequenceFactory.Sequence._createCounterModel (/Users/tbruner/dev/s4n3/node_modules/mongoose-sequence/lib/sequence.js:191:23)
    at SequenceFactory.Sequence.enable (/Users/tbruner/dev/s4n3/node_modules/mongoose-sequence/lib/sequence.js:103:31)
    at SequenceFactory.Sequence.getInstance (/Users/tbruner/dev/s4n3/node_modules/mongoose-sequence/lib/sequence.js:92:14)
    at Schema.plugin (/Users/tbruner/dev/s4n3/node_modules/mongoose/lib/schema.js:1500:3)
    at applyPlugins (/Users/tbruner/dev/s4n3/node_modules/mongoose/lib/helpers/schema/applyPlugins.js:11:14)
Todd
  • 698
  • 6
  • 19

1 Answers1

0

mongoose-sequence is not an ES6 module.
In the first version you're using import and in the second you're mixing import and require which is not allowed.
You should try with

const AutoIncrementFactory = require('mongoose-sequence');
  • Made the suggested change and I get the Maximum call stack size exceeded error just as before. – Todd Jul 27 '20 at 13:21
  • I have the same issue, I tried also the solution provided here https://stackoverflow.com/questions/62824276/auto-increment-sequence-in-nestjs-mongoose but when i generate a new model, the orderId doesn't populate. – Daggle Oct 15 '20 at 19:43