Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
can';t使用heroku上的node.js连接到mongolab_Node.js_Mongodb_Heroku_Mlab - Fatal编程技术网

can';t使用heroku上的node.js连接到mongolab

can';t使用heroku上的node.js连接到mongolab,node.js,mongodb,heroku,mlab,Node.js,Mongodb,Heroku,Mlab,我无法让node.js和mongodb与mongolab一起在heroku上工作。我已经阅读了其他问题,如和,但我仍然无法设置我的连接。日志中显示[错误:无法连接到…] 我从MONGOLAB_URI进程环境中获取了数据库、主机和端口。我有以下代码: var mongoUri = mongodb://heroku_app17328644:{password}@ds037518.mongolab.com //taken from process.env.MONGOLAB_URI var host

我无法让node.js和mongodb与mongolab一起在heroku上工作。我已经阅读了其他问题,如和,但我仍然无法设置我的连接。日志中显示[错误:无法连接到…]

我从MONGOLAB_URI进程环境中获取了数据库、主机和端口。我有以下代码:

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');
});

我做错了什么?

核心问题似乎是您试图使用MongoDB URI作为主机名

下面介绍如何使用URI和进行连接:

var mongodb=require('mongodb');
var uri='1〕mongodb://user:pass@主机:端口/db';
mongodb.MongoClient.connect(uri,函数(err,db){
/*冒险*/
});
当然,您需要将
uri
中的
用户
通行证
主机
端口
、和
数据库
替换为实际的连接参数。如果您正在使用,则可以从以下环境中获取URI:

var uri=process.env.mongollab_uri;
使用
MongoClient
safe模式时,默认设置为安全模式,因此该选项可以省略。要指定
自动重新连接
,只需将其作为服务器选项传递即可

var mongodb=require('mongodb');
var uri='1〕mongodb://user:pass@主机:端口/db';
mongodb.MongoClient.connect(uri,{server:{auto_reconnect:true}},函数(err,db){
/*冒险*/
});

以下是我的做法。这样,当在Heroku上部署和运行时,我的应用程序连接到开发机器上的“测试”数据库和“mongolab”数据库

mongoose = require("mongoose");
mongoURI = 'mongodb://localhost/test';
mongoose.connect(process.env.MONGOLAB_URI || mongoURI);

在我自己的例子中,我查询了配置设置
heroku config
,结果发现mongodb被添加为
mongodb\u URI

因此,我在URI中添加了process.env.MONGODB_URI,如:

var uri = process.env.MONGODB_URI || process.env.MONGOHQ_URL || process.env.MONGOLAB_URI;

您收到的错误消息是什么?他收到了
错误:无法连接到…
并且
db
为空:)这不是完整的错误消息…[错误:无法连接到]mongodb://heroku_appXXXXXX:{password}@ds037518.mongolab.com]这是我遇到的错误,我也有同样的问题。当我执行'heroku config'时,它不会返回MONGODB_URI,它只返回heroku链接。我也尝试过这个“heroku config:get MONGODB_URI”,但它没有返回任何东西。我的代码链接是:heroku push正在工作,但日志显示无法连接到端口27017。我可能做错了什么?节点版本8.9.4