尝试使用月光鹅连接时出现以下错误。
MongooseError:连接时不能mongoose.connect()
多次。
抛出新的_mongoose.Error('连接时不能多次mongoose.connect()
。');
^
MongooseError:连接时不能多次mongoose.connect()
。
在新的MongooseError(/node_modules/mongoose/lib/error/mongooseError.js:10:11)
请帮助我找出原因以及如何预防
答案 0 :(得分:3)
在猫鼬版本5.6.1中,检查已添加https://github.com/Automattic/mongoose/pull/7905
恢复为较早版本以进行快速修复。
答案 1 :(得分:2)
我遇到了同样的问题,很容易解决了。 我要做的就是删除控制器中的所有连接。
之前: Server.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...
之后: Server.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...
很显然,我已从所有控制器文件中将其删除。
答案 2 :(得分:0)
要使用多个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}`);
});
};
答案 3 :(得分:0)
正如“ iamdimitar”所指出的,此PR中取消了多次调用Message
的功能。据说这样做是为了防止错误。
如果必须多次致电mongoose.connect()
,则可以使用一个mongoose.connect()
,其余部分则使用mongoose.connect()
。这对我有用(我只使用了另外一个mongoose.createConnection()
)