我尝试连接到我的nodeJS项目中的mongodb服务器。我有一个DB配置文件DB.js
module.exports = {
DB: 'mongodb+srv://user%40gmail.com:%24ugar@cluster-jfgsm.mongodb.net/test?retryWrites=true'
};
用户名包含@(%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)}
);
并在package.json文件中添加了自定义的serve
选项来运行nodemon。
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e",
"serve": "nodemon server.js"
},
但是,当我尝试使用命令npm run serve
运行项目时,我在控制台中收到一条错误消息
无法连接到数据库MongoParseError:在authority部分中未转义的at符号
我在堆栈溢出中搜索了许多问题,但没有一个对我有效。
任何帮助都是感激不尽的。谢谢
7条答案
按热度按时间2admgd591#
可以对密码进行如下编码:
如果密码中有
@
,则应将其更改为%40
。yzuktlbb2#
注意:@ds047207.mlab.com:47207它在您的帐户检查中提供了u。它没有连接,请尝试简单的用户名和密码。创建用户例:用户名:asif,密码:asif 123 Bcoz我已经创建了用户名:asif-vora和密码:asif@1234它在数据库连接中得到错误,当我尝试与用户名:asif,密码:asif 123它的工作正常:)
f3temu5u3#
发现了同样的问题,但毕竟结果不是mongodb atlas帐户用户(它有电子邮件作为用户名)需要登录。
所需的用户必须能够访问在mongodb atlas中创建的集群。
Project > clusters > [Select cluster]
Security tab > select/create new db user
这些用户不需要有特殊字符(甚至有一条消息表明这些字符将被编码)
见下图:
dhxwm5r44#
你有没有试过逃避@和$之类的
3ks5zfa05#
试试这个,它对我很有效:
用你的碎片换吧。
snz8szmq6#
如果您的用户名和密码包含以下任何特殊字符
/?# [ ] @
通过命令行界面连接或运行命令时可能会遇到问题:/?# [ ] @在URI中使用等效的ASCII编码。对于@,等效编码为%40
3ks5zfa07#
非常简单解决方案:删除密码中特殊字符:
我也面临问题。我密码中有@。
解决方案:数据库访问-〉它将显示您的用户,点击编辑和更新新密码没有特殊字符。然后在您的连接字符串中使用它。