use*_*290 7 heroku mongodb node.js mlab
我在使用mongolab工作在heroku上制作node.js和mongodb时遇到了麻烦.我已经阅读了其他问题,例如如何使用MongoLab在Heroku上设置MongoDB数据库?以及如何在Node.js Web应用程序中管理MongoDB连接?但我仍然无法建立我的连接.它在日志中显示[错误:无法连接到...]
我从MONGOLAB_URI进程env获取数据库,主机和端口.我有以下代码:
var mongoUri = mongodb://heroku_app17328644:{password}@ds037518.mongolab.com //taken from process.env.MONGOLAB_URI
var host = 'mongodb://heroku_appXXXXXX:{password}@ds037518.mongolab.com';
var port = '37518';
var database = 'heroku_appXXXXXX';
Provider.db = new Db(database, new Server(host, port, { safe: true }, { auto_reconnect: true }, {}));
Provider.db.open(function(err, db){
console.log(db); //null
if (err) console.log(err);
else console.log('success');
});
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么 ?
jar*_*red 14
核心问题似乎是您尝试使用MongoDB URI作为主机名.
以下是使用URI进行连接的方法MongoClient:
var mongodb = require('mongodb');
var uri = 'mongodb://user:pass@host:port/db';
mongodb.MongoClient.connect(uri, function (err, db) {
/* adventure! */
});
Run Code Online (Sandbox Code Playgroud)
当然你要替换user,pass,host,port,并db在uri您的实际连接参数.如果您正在使用Heroku的MongoLab插件,您可以从环境中获取URI,如下所示:
var uri = process.env.MONGOLAB_URI;
Run Code Online (Sandbox Code Playgroud)
使用MongoClient安全模式时是默认模式,因此可以省略该选项.要指定auto_reconnect只是将其作为服务器选项传递.
var mongodb = require('mongodb');
var uri = 'mongodb://user:pass@host:port/db';
mongodb.MongoClient.connect(uri, { server: { auto_reconnect: true } }, function (err, db) {
/* adventure! */
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14507 次 |
| 最近记录: |