我正在尝试弄清楚如何使用本机节点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# 驱动程序进行了测试,它就像一个魅力。