无法连接到数据库MongoParseError: Unescaped at-sign in authority 部分

suz*_*zan 2 mongodb node.js mean-stack

我正在尝试在我的 nodeJS 项目中连接到 mongodb 服务器。我有一个 db 配置文件作为 DB.js

module.exports = {
    DB: 'mongodb+srv://user%40gmail.com:%24ugar@cluster-jfgsm.mongodb.net/test?retryWrites=true'
 };
Run Code Online (Sandbox Code Playgroud)

用户名包含 @ (%40) 标记,因为它是电子邮件 ID,密码包含 $(%24) 个字符。

我已经在我的 server.js 文件中将它连接为

    mongoose = require('mongoose'),
    config = require('./config/DB');

    const app = express();

    mongoose.Promise = global.Promise;
    mongoose.connect(config.DB,  { useNewUrlParser: true } ).then(
      () => {console.log('Database is connected') },
      err => { console.log('Can not connect to the database'+ err)}
    );
Run Code Online (Sandbox Code Playgroud)

serve在 package.json 文件中添加了自定义选项来运行 nodemon。

"scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e",
    "serve": "nodemon server.js"
  },
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用命令运行项目时npm run serve,我在控制台中收到一条错误消息

无法连接到数据库MongoParseError: Unescaped at-sign in authority 部分

我也在堆栈溢出中搜索了许多问题,但没有任何对我有用。

任何帮助表示赞赏。谢谢你

小智 12

可以像这样对密码进行编码:

const DB_USER = 'user';
const PASSWORD = encodeURIComponent('hello@123'); 
const DB_URL = `mongodb://${DB_USER}:${PASSWORD}@ds331735.mlab.com:31772/any_db`;
Run Code Online (Sandbox Code Playgroud)

如果@您的密码中有 ,则应将其更改为%40