[英]Cannot connect to MongoDB in Azure
我在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();
});
我的密碼具有以下特征:
=
, @
, $
等 執行上面的代碼時,我得到以下信息:
Error: Password contains an illegal unescaped character
at parseConnectionString (C:\Users\myuser\Documents\myproj\node_modules\mongodb\lib\url_parser.js:280:13)
但是,文檔並未說明如何解決此問題。 我猜這是一個編碼問題。 如何解決這個問題?
諸如@之類的字符受限制,因為它們會弄亂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();
});
用這個
mongoClient.connect("mongodb://myuser:myp%40ssword@myhost.documents.azure.com:10355/?ssl=true", {
uri_decode_auth: true
}, function (err, db) {
db.close();
});
要對密碼進行編碼,請使用encodeURIComponent(password)
您也可以使用此語法。
mongoClient.connect("mongodb://myhost.documents.azure.com:10355/?ssl=true",
{user: 'username', pass: 'p@ssword'}, function (err, db) {
db.close();
});
在更高版本上,請使用
auth: {
user: 'username',
password: 'p@ssword',
}
如下
mongoClient.connect("mongodb://myhost.documents.azure.com:10355/?ssl=true", {
auth: {
user: 'username',
password: 'p@ssword',
}}, function (err, db) {
db.close();
});
接受的答案在mongodb> 3.0.x上對我不起作用
此代碼對我有用:
const mongoClient = require("mongodb").MongoClient;
let database = null;
new mongoClient('mongodb://myhost.documents.azure.com:10355/?ssl=true', {
auth: {
user: 'username',
password: 'p@ssword',
}
}).connect(
(err, db) => {
if (err) return console.error(err);
console.log('Database connected');
database = db.db('foo');
});
MongoDB現在可以使用帶有特殊字符的密碼。 為此,向連接{ useNewUrlParser: true }
添加一個選項:
const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');
const uri = 'mongodb://mydbname:pa$s;w@rd@mongodb0.example.com:27017/admin';
MongoClient.connect(uri, { useNewUrlParser: true }, (err, db) => {
assert.strictEqual(null, err);
// ...
db.close();
});
實際上,mongoDB和數據庫都有單獨的用戶名。它們也有不同的密碼。因此,請確保您擁有
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.