如何使用登录密码在 NodeJS 中初始化本机 Mongo



我正在尝试弄清楚如何使用本机节点mongo驱动程序连接到我的mongodb db,我有两个问题:

  • 我的密码包含一个@符号,使其破坏了正常用户:pass@host连接字符串格式
  • 如何列出下面拥有的数据库?

关于如何解决这个问题的任何想法?

这是一个不起作用的尝试:

var Mongo = require('mongodb');
var server = new Mongo.Server('mongodb://myhost', 27017);
var db = new Mongo.Db('test', server);
db.open(function(err, db) {
    console.log(err); //unable to connect
});

对于未来的读者,我能够使用连接选项uri_decode_auth解决此问题。在将其嵌入到连接字符串中之前,需要encodeURIComponent(password)

这是一个完整的工作示例:

MongoClient.connect(connection, { uri_decode_auth: true }, function(err, db) {
  if(err) {
    return cb(err);
  }
  db.admin().listDatabases(function(err, dbs) {
    console.log(dbs);
  });
});

正如这个答案中提到的:

解决方案是用%40替换@

我用 C# 驱动程序进行了测试,它就像一个魅力。

最新更新