繁体   English   中英

尝试连接到MongoDB Atlas时如何解决密码错误?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM