gpt4 book ai didi

node.js - Nodejs 与 koa 和 Mongo - MongooseError : You can not `mongoose.connect()` multiple times while connected

转载 作者:太空宇宙 更新时间:2023-11-04 01:28:26 25 4
gpt4 key购买 nike

我在带有 koa 的 Nodejs 中的 aws 机器上有一个应用程序,并且该应用程序与另一台 aws 机器上的 mongodb 连接。我收到的错误是 MongooseError: You can notmongoose.connect()连接时多次。我也在使用 pm2 运行应用程序

这是连接到数据库的代码:

    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

引用:

In mongoose version 5.6.1 the check was added https://github.com/Automattic/mongoose/pull/7905

Revert to an older version for a quick fix.

<小时/>

如果在package.json中, Mongoose 版本如下:^5.x.y,那么插入符^将使其更新到最近的次要版本,即最高的x(例如5.9.y,但不是6.x.y)。
因此必须强制使用旧版本。

<小时/>

更新:根据这个答案:https://stackoverflow.com/a/56816168/11330560

必须删除任何 Controller 文件中的任何其他连接,只有主文件才能建立连接。

关于node.js - Nodejs 与 koa 和 Mongo - MongooseError : You can not `mongoose.connect()` multiple times while connected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56798892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com