Nodejs Mongoose错误:getaddrinfo ENOTFOUND undefined undefined:27017

时间:2016-03-16 23:05:54

标签: node.js mongodb mongoose

我试图仅使用原生mongodb切换到mongoose并遇到麻烦。

像以前一样连接数据库工作正常:

var db;

var passDb = function(req, res, next) {
    if (!db) {
        mongo.connect(process.env.MONGOLAB_URI, function(err, database) {
            if (err) throw err;
            db = database;

            req.db = db;
          next();
        });
    } else {
      req.db = db;
      next();
    }
}

但我尝试这样做的方式现在引发错误:

var mongoose     = require('mongoose');

var Poll         = require('./app/models/poll');

mongoose.connect(process.env.MONGOLAB_URI);
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
  // we're connected!
});

错误:

connection error: { [MongoError: getaddrinfo ENOTFOUND undefined undefined:27017
]
  name: 'MongoError',
  message: 'getaddrinfo ENOTFOUND undefined undefined:27017' }

任何想法导致了什么?

编辑:当我直接使用数据库uri时它可以工作,但是当我使用环境变量时却不行。我已检查并三重检查所有内容是否正确输入,它拒绝使用环境变量,我必须将其直接放在代码中:S

2 个答案:

答案 0 :(得分:3)

好的,我弄清楚了我的错误,我在调用require('dotenv').load();之前连接到数据库。神秘解决了!

mongoose.connect(process.env.MONGOLAB_URI);现在有效!

答案 1 :(得分:1)

我认为您忘记定义env变量 也许您忘记了在服务器或启动文件上调用dotenv软件包的config方法 配置它

const dotenv = require("dotenv")
dotenv.config()

在您观看的文件或启动器上... 然后使用process.env.VARIABLE 或者为了测试您的mongo连接,请使用简单的字符串url 像这样:

mongodb:// localhost:27017 / database_name