mongodb Mongoose 错误:连接时不能多次执行'mongoose.connect()'

dzhpxtsq  于 2023-01-30  发布在  Go
关注(0)|答案(4)|浏览(190)

我得到下面的错误时,试图连接使用moongoose。
Mongoose 错误:连接时不能多次mongoose.connect()
throw new_mongoose.错误('连接时不能多次mongoose.connect()。');^ Mongoose 错误:在新的MongooseError(/node_modules/mongoose/lib/error/mongooseError. js:10:11)中,您不能在连接时多次执行mongoose.connect()
请帮我找出原因和如何预防

wfveoks0

wfveoks01#

在mongoose版本5.6.1中,添加了检查https://github.com/Automattic/mongoose/pull/7905
恢复到旧版本以快速修复。

9wbgstp7

9wbgstp72#

为了使用多个MongoDB连接,请使用mongoose.createConnection函数而不是mongoose.connect
mongoose.createConnection将为您提供一个连接对象,您可以在模型文件中进一步使用它,因为模型总是绑定到单个连接

let config = require('../config');
let mongoose = require('mongoose');

exports.connect = function () {
  const db = mongoose.createConnection(config.mongoUrl, {
    reconnectInterval: 5000,
    reconnectTries: 60
    // add more config if you need
  });
  db.on(`error`, console.error.bind(console, `connection error:`));
  db.once(`open`, function () {
    // we`re connected!
    console.log(`MongoDB connected on "  ${config.mongoUrl}`);
  });
};
h9vpoimq

h9vpoimq3#

我也遇到过同样的问题,而且很容易就解决了。我所要做的就是删除控制器中的任何连接。
之前:服务器. js

const mongoose = require('mongoose');
const connectionString = 'mongodb://localhost:27017/DB';
mongoose.connect(connectionString);
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
//Server code...

Controller.js

const mongoose = require('mongoose');
const connectionString = 'mongodb://localhost:27017/DB';
mongoose.connect(connectionString);
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
//Controller code...

之后:服务器. js

const mongoose = require('mongoose');
const connectionString = 'mongodb://localhost:27017/DB';
mongoose.connect(connectionString);
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
//Server code...

Controller.js

//Controller code...

显然我把它从我所有的控制器文件中删除了。

a5g8bdjr

a5g8bdjr4#

正如'iamdimitar'所指出的,在PR中删除了多次调用mongoose.connect()的功能,据说这样做是为了防止错误。
如果必须多次调用mongoose.connect(),可以使用一个mongoose.connect(),其余的使用mongoose.createConnection(),这对我很有效(我只使用了另外一个mongoose.createConnection()

相关问题