带有“@”的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
是我的密码