带有“@”的MongoDB密码

我试图用Node.js中的Mongoose连接到一个使用用户名和密码的MongoDB数据库。 所有的文档都说连接string应该看起来像

mongodb://username:password@host:port/db 

但是,密码中包含“@”字符。 我怎样才能使连接string出这个mongoose会明白? 我可以逃避密码中的“@”,还是有另一种连接方法,我必须使用?

使用这个语法,不要忘记uri_decode_auth选项。

 mongoClient.connect("mongodb://username:p%40ssword@host:port/dbname", { uri_decode_auth: true }, function(err, db) { } ); 

使用mongoose.connect调用的options pass-through参数指定密码,而不是将其包含在URLstring中:

 mongoose.connect('mongodb://localhost/test', {user: 'username', pass: 'p@ssword'}, callback); 

mongoose.connect中没有直接使用的任何参数都被传递给支持这个的底层原生connection.open调用。

使用pwd代替传递,为我工作的版本3.2

 mongoose.connect('mongodb://localhost/test', {user: 'username', pwd: 'p@ssword'}, callback); 

有时您需要使用其他接受string的工具连接到数据库,只能作为连接string。 所以只需使用%40更改@符号

试试这个,我的朋友们:

  mongoose.connect("mongodb://localhost:27017/test?authSource=admin", {user: 'viettd', pass: 'abc@123'}); 

test是我的数据库名称
admin是我的身份validation数据库
viettd是我的用户名
abc@123是我的密码