我正在尝试从只使用原生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
发布于 2016-03-17 08:15:17
好了,我找出了我的错误,我在调用require('dotenv').load();之前连接到了数据库。谜团解开了!
mongoose.connect(process.env.MONGOLAB_URI);现在可以工作了!
发布于 2020-03-27 19:27:04
我想您忘记了定义env变量,或者您可能忘记调用服务器上dotenv包的config方法或starter文件config it。
const dotenv = require("dotenv")
dotenv.config()在您的监视文件或启动器上...然后使用process.env.VARIABLE或测试mongo连接,使用简单的字符串url,如下所示:
mongodb://localhost:27017/database_name
https://stackoverflow.com/questions/36048655
复制相似问题