【问题标题】:connecting to mongo via open using node.js使用 node.js 通过 open 连接到 mongo
【发布时间】:2014-01-07 20:41:42
【问题描述】:

如何在不使用 MongoClient.connect() 的情况下连接到远程数据库 (MONGOHQ)?

var db, mongo, server;

mongo = require("mongodb");

server = new mongo.Server("mongodb://login:password@paulo.mongohq.com:10057//appname", 10057, {
 auto_reconnect: true
});

db = new mongo.Db("confirmed", server, { safe: true });

我从服务器收到的消息是

[Error: failed to connect to [mongodb://login:password@paulo.mongohq.com:10057//appname:10057]]

有什么想法吗?

【问题讨论】:

  • 您能否使用相同的凭据从命令行mongo shell 进行连接?示例命令行:mongo -u login -p password paulo.mongohq.com:10057/appname。看起来您在 appname 之前有一个额外的“/”,并且您还复制了端口号 (10057)。我怀疑您的 Node.js 连接字符串应该是 server = new mongo.Server("mongodb://login:password@paulo.mongohq.com:10057/appname");

标签: node.js mongodb mongohq


【解决方案1】:

您想要更多类似的东西,将服务器定义为 DNS 名称(无协议、端口、身份验证或路径):

server = new mongo.Server("paulo.mongohq.com", 10057, {
    auto_reconnect: true
});

db = new mongo.Db("confirmed", server, { safe: true });

然后一旦 db 被定义:

db.open(function(erreur, db) {
    db.authenticate('user', 'name', function(err, result) {
        //
    });

【讨论】:

  • 要使用的网址是 paulo.mongohq.com/appname ?
  • @maximegir 不,您需要在其他地方指定应用名称;对 mongo 不太熟悉,但是如果您在文档中查找信息(甚至在 SO 的其他地方),您会发现它连接到 IP 地址或 DNS 名称,而不是 URL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-14
  • 1970-01-01
  • 2015-12-17
  • 1970-01-01
  • 2018-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多