And*_*dry 11 javascript azure mongodb node.js
我在Azure上有一个MongoDB,我正在尝试使用npm模块mongodb连接到它:
var mongoClient = require("mongodb").MongoClient;
mongoClient.connect("mongodb://myuser:mypassword@myhost.documents.azure.com:10355/?ssl=true", function (err, db) {
db.close();
});
Run Code Online (Sandbox Code Playgroud)
我的密码具有以下特征:
=,@,$等执行上面的代码时,我得到以下内容:
Error: Password contains an illegal unescaped character
at parseConnectionString (C:\Users\myuser\Documents\myproj\node_modules\mongodb\lib\url_parser.js:280:13)
Run Code Online (Sandbox Code Playgroud)
但是,文档并未详细说明如何解决此问题.我想这是一个编码问题.如何解决这个问题?
Sol*_*ver 17
像@这样的字符会受到限制,因为它们会破坏URL的结构.这是因为MongoDB将其解释为@分隔符.而不是这个:
var mongoClient = require("mongodb").MongoClient;
mongoClient.connect("mongodb://myuser:myp@ssword@myhost.documents.azure.com:10355/?ssl=true", function (err, db) {
db.close();
});
Run Code Online (Sandbox Code Playgroud)
用这个
mongoClient.connect("mongodb://myuser:myp%40ssword@myhost.documents.azure.com:10355/?ssl=true", {
uri_decode_auth: true
}, function (err, db) {
db.close();
});
Run Code Online (Sandbox Code Playgroud)
要编码密码,请使用 encodeURIComponent(password)
您也可以使用此语法.
mongoClient.connect("mongodb://myhost.documents.azure.com:10355/?ssl=true",
{user: 'username', pass: 'p@ssword'}, function (err, db) {
db.close();
});
Run Code Online (Sandbox Code Playgroud)
在以后的版本中,使用
auth: {
user: 'username',
password: 'p@ssword',
}
Run Code Online (Sandbox Code Playgroud)
如下
mongoClient.connect("mongodb://myhost.documents.azure.com:10355/?ssl=true", {
auth: {
user: 'username',
password: 'p@ssword',
}}, function (err, db) {
db.close();
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8369 次 |
| 最近记录: |