当密码中有@时,如何使用mongoose连接到MongoDB?

时间:2018-11-26 07:45:09

标签: mongoose

mongoose.connect('mongodb://admin:admin@MongoDB1995@200.100.200.100/database', { useNewUrlParser: true })

这是Mongoose用来解析目标数据库中的用户名和密码的字符串。这里有一个问题,密码本身包含“ @”,因此猫鼬会错误地解析它。那么,如何在密码中带有@的猫鼬中传递密码?

我可以使用mongodb://200.100.200.100/database?user= admin:admin&pass=admin@MongoDB1995来连接数据库,但是如果我在数据库上运行了任何命令,那么一旦连接成功,它就会发出拒绝消息:

UnhandledPromiseRejectionWarning: MongoError: command insert requires authentication

2 个答案:

答案 0 :(得分:0)

尝试这种方式:

  

mongoose.connect('mongodb:// username:password @ host:port / database?opt​​ions ...');

var connectionString = 'mongodb://admin:MongoDB1995@200.100.200.100:database_port_here/database';

mongoose.connect(connectionString,{ useNewUrlParser: true });

了解更多here

答案 1 :(得分:0)

connection string documentation of MongoDB

  

如果用户名或密码包含@符号,冒号:,斜杠/或百分号%字符,则use percent encoding

您可以通过<table id="MVCGridTable_Grid" class="table table-striped table-bordered"> <thead> <tr> <th>aaa</th> <th>aaa</th> <th>aaa</th> <th>aaa</th> <th>aaa</th> </tr> </thead> <tbody> <tr> <td>aaa</td> <td>aaa</td> <td>aaa</td> <td>aaa</td> <td>aaa</td> </tr> <tr> <td>aaa</td> <td>aaa</td> <td>aaa</td> <td>aaa</td> <td>aaa</td> </tr> <tr> <td>aaa</td> <td>aaa</td> <td>aaa</td> <td>aaa</td> <td>aaa</td> </tr> <tr> <td>aaa</td> <td>aaa</td> <td>aaa</td> <td>aaa</td> <td>aaa</td> </tr> <tr> <td>aaa</td> <td>aaa</td> <td>aaa</td> <td>aaa</td> <td>aaa</td> </tr> </tbody> </table>在JavaScript中进行百分比编码。无论您的Mongo用户名,密码或数据库是否具有上述特殊字符,并且其中MONGO_USERNAME,MONGO_PASSWORD,HOST,PORT和DATABASE都是您定义的变量(在环境变量或配置文件中很有可能),下面的代码都将起作用。 >

encodeURIComponent

P.S。 const connectionString = `mongodb://${encodeURIComponent(MONGO_USERNAME)}:${encodeURIComponent(MONGO_PASSWORD)}@${HOST}:${PORT}/${encodeURIComponent(DATABASE)}`; mongoose.connect(connectionString,{ useNewUrlParser: true }); (反引号)为ES2015 template strings,至少可用于Node.js 4+版本 根据{{​​3}}。

出于某些原因,您可能希望将配置放入环境变量中,请参阅Kangax's compatibility table指南,该指南主要指出,它有助于使您的应用更轻松地在多个不同的环境中运行,例如开发,测试和生产。如果源泄漏,将环境与代码分开还有助于“(不损害任何凭据)”。我强烈推荐整个指南,它对应用程序的可移植性有很好的建议。