如何使用login密码在NodeJS中启动本地Mongo

我想弄清楚如何使用本地节点mongo驱动程序连接到我的mongodb数据库,我有两个问题:

  • 我的密码包含一个@符号,使其打破正常的用户:传递@主机连接string格式
  • 如何从下面列出的数据库中列出数据库?

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

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

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来解决这个uri_decode_auth 。 在将其embedded连接string之前,您需要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); }); }); 

正如在这个答案中提到的:

解决方法是用%40replace@

我用C#驱动程序进行testing,它的作用就像一个魅力。