[英]How to fix password error when trying to connect to MongoDB Atlas?
尝试从Node
应用程序连接到mongdb atlas
时,我一直收到错误mongdb atlas
这是我的代码
const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');
const url = `mongodb+srv://username:passwordwithspeciacharacters$$!!22@cluster0-xxxxx.mongodb.net/test?retryWrites=true&w=majority`;
module.exports = {
signup: (name, email, password) => {
MongoClient.connect(url, (err, db) => {
if (err) {
console.log(err);
} else {
db.collection('user').insertOne({
name: name,
email: email,
password: password
},
function(err, result) {
assert.equal(err, null);
console.log('Saved the user sign up details.');
}
);
}
});
}
};
这是我得到的错误
(node:9626) DeprecationWarning: current URL string parser is
deprecated, and will be removed in a future version. To use the new
parser, pass option { useNewUrlParser: true } to MongoClient.connect.
Error: Password contains an illegal unescaped character
我应该如何清除可能传入的密码?
const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');
const crypto = require('crypto');
const url = `mongodb+srv://username:passwordwithspeciacharacters$$!!22@cluster0-xxxxx.mongodb.net/test?retryWrites=true&w=majority`;
module.exports = {
signup: (name, email, password) => {
MongoClient.connect(url ,{useNewUrlParser:true}, (err, db) => {
if (err) {
console.log(err);
} else {
db.collection('user').insertOne({
name: name,
email: email,
password: crypto
.createHmac('sha256', 'secret')
.update(password)
.digest('hex')
},
function (err, result) {
assert.equal(err, null);
console.log('Saved the user sign up details.');
}
);
}
});
}
};
//与登录时匹配密码的方式相同
MongoDB密码是URL编码的,因此您应该使用encodeURIComponent
。 添加useNewUrlParser
选项对象也可以修复警告。
MongoClient.connect(encodeURIComponent(url), { useNewURLParser: true }, (err, db) => {...});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.