Mongodb驱动程序:缺少主机和选项之间的分隔斜杠

Lix*_*ang 8 mongodb node.js

我复制了MONGODB NODE.JS DRIVER 2.2中的代码并进行了一些修改.

// connect to mongodb
var MongoClient = require('mongodb').MongoClient,
f = require('util').format;

var user = encodeURIComponent('admin'),
password = encodeURIComponent('123456'),
authMechanism = 'DEFAULT',
authSource = 'admin';

// connection url
var url = f('mongodb://%s:%s@localhost:27017?authMechanism=%s&authSource=%s',
user, password, authMechanism, authSource);

var db = null;
MongoClient.connect(url, function(err, db) { //Here is line 20!
    if(err) { 
        console.log('Unable to connect to the mongoDB server. Error:', err); 
    }
    else {  
        console.log('Connection established to', url);
        db = database // once connected, assign the connection to the global variable 
    }
})
Run Code Online (Sandbox Code Playgroud)

但是,我遇到了一个奇怪的错误.

Error: missing delimiting slash between hosts and options.
at module.exports (/home/lixing/Dropbox/thesis/node_modules/mongodb/lib/url_parser.js:37:11)
at connect (/home/lixing/Dropbox/thesis/node_modules/mongodb/lib/mongo_client.js:289:16)
at Function.MongoClient.connect (/home/lixing/Dropbox/thesis/node_modules/mongodb/lib/mongo_client.js:113:3)
at Object.<anonymous> (/home/lixing/Dropbox/thesis/server.js:20:13)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.runMain (module.js:604:10)
Run Code Online (Sandbox Code Playgroud)

在控制台中提到MongoClient.connect中存在错误.

但是,我无法解决这个问题.这是一个错误还是我的问题?

谢谢.

Jac*_*ski 18

/在端口号和选项之间缺少一个.

mongodb://%s:%s@localhost:27017/?authMechanism=%s&authSource=%s

有关连接字符串的更多信息:https://docs.mongodb.com/manual/reference/connection-string/

  • 作为此评论的补充,请确保用户名/密码是 uriEncoded 否则您可能会遇到相同的错误并且身份验证将不起作用 (2认同)