Nodejs con koa y Mongo - MongooseError: No puede `mongoose.connect ()` varias veces mientras está conectado

tolva

Tengo una aplicación en una máquina aws en nodejs con koa y esta aplicación se conecta con un mongodb en una máquina aws diferente. El error que recibo es MongooseError: You can notmongoose.connect () multiple times while connected.También estoy ejecutando la aplicación con pm2

este es el código para conectarse a la base de datos:

    const mongoose = require('mongoose');
const { transform } = require('koa-bootstrap-service/lib/plugins');
const url = require('url');

const config = require('../../config/index');

mongoose.Promise = Promise;

function makeMongoUrl() {
    const dbSettings = config.mongoDb;
    if (!dbSettings) {
        return false;
    }

    if (dbSettings.url) {
        return dbSettings.url;
    }

    const urlObj = {
        hostname: dbSettings.host,
        port: dbSettings.port,
        pathname: `/${dbSettings.db}`,
        query: dbSettings.options,
        protocol: 'mongodb',
        slashes: true,
    };
    if (dbSettings.username) {
        urlObj.auth = `${dbSettings.username}:${dbSettings.password || ''}`;
    }
    return url.format(urlObj);
}

function connectMongoDb() {
    mongoose.plugin(transform.middleware());
    mongoose
        .connect(makeMongoUrl(), {
            useNewUrlParser: true,
            useCreateIndex: true,
            useFindAndModify: false,
            keepAlive: 1,
            connectTimeoutMS: 30000,
            reconnectTries: 30,
        })
        .then(() => {
            global.Logger.debug('Mongoose Connected');
        })
        .catch(({ stack }) => {
            global.Logger.error(stack);
            process.exit(0);
        });
}

connectMongoDb();
Matin Sasan

https://stackoverflow.com/a/56760259/11330560

Citar:

En la versión 5.6.1 de mangosta, se agregó el cheque https://github.com/Automattic/mongoose/pull/7905

Vuelva a una versión anterior para una solución rápida.


Si en package.json la versión de mangosta es así: ^5.x.yentonces caret ^hará que se actualice a la versión menor reciente , es decir, hasta la más alta x(me gusta 5.9.ypero no 6.x.y).
Entonces uno debe forzar la versión anterior.


ACTUALIZACIÓN: de acuerdo con esta respuesta: https://stackoverflow.com/a/56816168/11330560

Uno debe eliminar cualquier otra conexión en cualquier archivo de controlador , y solo el archivo principal puede hacer la conexión.

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados