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 not
mongoose.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();
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.y
entonces caret ^
hará que se actualice a la versión menor reciente , es decir, hasta la más alta x
(me gusta 5.9.y
pero 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
Déjame decir algunas palabras