Mongoose在使用mongolab uri连接时出错?

时间:2015-06-14 12:45:53

标签: node.js mongodb mlab

它出现以下错误 -

mongoose connection error:  { [MongoError: connect EINVAL] name: 'MongoError', message: 'connect EINVAL' }

/home/user/Documents/oes/node_modules/connect-mongo/node_modules/mongodb/lib/server.js:228
    process.nextTick(function() { throw err; })
                                        ^
Error: connect EINVAL
at errnoException (net.js:905:11)
at connect (net.js:767:19)
at net.js:846:9
at asyncCallback (dns.js:68:16)
at Object.onanswer [as oncomplete] (dns.js:121:9)
6月14日18:04:11 - [nodemon]应用程序崩溃 - 在开始之前等待文件更改...

1 个答案:

答案 0 :(得分:1)

这是一个非常古老的问题,但由于还没有人回答这个问题。

我们经常看到用户使用Mongoose驱动程序连接到MongoLab时遇到问题。根本原因几乎总是错误的驱动程序配置,特别是在超时周围。以下是使用MongoLab推荐的驱动程序选项的连接示例:

// mongoose 4.3.x
var mongoose = require('mongoose');



/* 
 * Mongoose by default sets the auto_reconnect option to true.
 * We recommend setting socket options at both the server and replica set level.
 * We recommend a 30 second connection timeout because it allows for 
 * plenty of time in most operating environments.
 */
var options = { server: { socketOptions: { keepAlive: 300000, connectTimeoutMS: 30000 } }, 
                replset: { socketOptions: { keepAlive: 300000, connectTimeoutMS : 30000 } } };       

var mongodbUri = 'mongodb://user:pass@host:port/db';

mongoose.connect(mongodbUri, options);
var conn = mongoose.connection;             

conn.on('error', console.error.bind(console, 'connection error:'));  

conn.once('open', function() {
  // Wait for the database connection to establish, then start the app.                         
});

如果这没有用,请确保您的密码或用户名没有任何特殊字符,请先尝试通过CMD连接。

希望我帮助过:)