【问题标题】:Cannot connect to mongolab using createConnection()无法使用 createConnection() 连接到 mongolab
【发布时间】:2016-02-27 16:58:12
【问题描述】:

我无法使用以下代码连接到 mongolab:

// DATABASE CONNECTION
var db1 = mongoose.createConnection('mongodb://foo:bar@ds011168.mlab.com:11168/db1');
var db2 = db1.useDb('mongodb://foo:bar@ds011168.mlab.com:12341/db2');

我试图跨 2 个数据库创建多重连接,所以我将 .createConnection() 用于第一个数据库,然后将 db1.useDb() 用于第二个数据库。这对localhost 非常有效,但是当我切换到 mongolab 时,一切都崩溃了。

我的 mongolab 设置没有任何问题,因为当我只使用 connect() 函数时:var db1 = mongoose.connect('mongodb://foo:bar@ds011168.mlab.com:11168/db1'); 它可以毫无问题地连接。但是,当我使用上面给定的代码(第一块代码)时,会导致此错误:MongoError: database names cannot contain the character '.'

我的目标是能够连接到 mongolab 上的多个数据库。

我正在使用最新的 mongoose npm。

【问题讨论】:

  • 考虑到错误,因为您的任何一个示例都不太可能是您的实际连接字符串(请不要发布),但错误当然会指向您实际连接中的确切问题字符串。
  • 是的,当然它们不是实际的连接 uri。但正如我所说,当我使用非常精确相同的 mongolab uri 使用 .connect() 时,它工作得很好。
  • @BlakesSeven 没关系,我想出了解决这个问题的办法。
  • 嗯,它必须是一个“错字”,这就是为什么我立即投票决定关闭。但是你真的应该关闭自己,因为这样的错误对他人没有任何好处。
  • @BlakesSeven 它必须是,但没有。如果您复制并粘贴一个字符串,系统会意外创建一个类型吗?我想不是。不要误会我的意思,但我知道如何看到“错字”

标签: node.js mongodb mongoose mlab


【解决方案1】:

我找到了解决这个问题的方法。我将发布此答案以供将来参考,以防有人遇到同样的问题。

注意以下代码:

var db1 = mongoose.createConnection('mongodb://foo:bar@ds011168.mlab.com:11168/db1');
var db2 = db1.useDb('mongodb://foo:bar@ds011168.mlab.com:12341/db2');

我没有使用db1的连接,而是使用这个:

var db1 = mongoose.createConnection('mongodb://foo:bar@ds011168.mlab.com:11168/db1');
var db2 = mongoose.createConnection('mongodb://foo:bar@ds011168.mlab.com:12341/db2');

db2 拥有自己的连接。

免责声明,我还不知道这是否是正确的方法,但同时它可以解决问题。也许通过这样做你可以为db1db2创建2个连接事件检查

【讨论】:

  • 这是MongoError: database names cannot contain the character '.'的答案?
  • 它解决了这个问题。我试图解决导致MongoError: database names cannot contain the character '.' 本身不是问题的问题。请在对可行的解决方案投票之前阅读免责声明。我明确表示“这可能不是正确的解决方案”,我只是将其发布为参考,以防有人遇到同样的问题。
  • 好吧,很公平,因为“交换数据库”和全新的集合之间是有区别的。但这仍然是一个你应该意识到的非常基本的错误。
猜你喜欢
  • 2013-08-07
  • 2016-01-25
  • 2015-02-11
  • 2015-09-04
  • 2016-06-01
  • 2014-07-28
  • 2016-01-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多