MongooseError:您无法在连接时多次`mongoose.connect()`

时间:2019-06-25 18:11:45

标签: node.js mongodb mongoose

尝试使用月光鹅连接时出现以下错误。

MongooseError:连接时不能mongoose.connect()多次。

抛出新的_mongoose.Error('连接时不能多次mongoose.connect()。');     ^ MongooseError:连接时不能多次mongoose.connect()。     在新的MongooseError(/node_modules/mongoose/lib/error/mongooseError.js:10:11)

请帮助我找出原因以及如何预防

4 个答案:

答案 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()