node.js - 通过 mongoose 连接到 MongoDB 会出现身份验证失败错误
问题描述
我正在尝试使用如下连接字符串连接到我的 Mongo 集群:
module.exports = {
MongoURI: MongoURI: 'mongodb+srv://philip:DummyPassword9$@test-cluster-026fd.mongodb.net/test?retryWrites=true'
}
并在 app.js 中设置了我的配置:
const express = require('express');
const expressLayouts = require('express-ejs-layouts');
const mongoose = require('mongoose');
const app = express();
// DB Config
const db = require('./config/keys').MongoURI;
// Connect to Mongo
mongoose.connect(db, { useNewUrlParser: true })
.then(() => console.log('MongoDB Connected....'))
.catch(err => console.log(err));
//EJS
app.use(expressLayouts);
app.set('view engine', 'ejs');
// Routes
app.use('/', require('./routes/index'));
app.use('/users', require('./routes/users'));
const PORT = process.env.PORT || 5000;
app.listen(PORT, console.log(`Server started on port ${PORT}`));
但是我没有连接到 Mongo 集群,而是得到一个错误:
MongoError: authentication fail
我阅读了所有可以在网上找到的与此问题相关的内容,我尝试像这样对我的密码进行编码:
module.exports = {
MongoURI: `mongodb+srv://philip:${encodeURIComponent('DummyPassword9')}$@test-cluster-026fd.mongodb.net/test?retryWrites=true`
}
但是我仍然无法连接,并且出现此错误。我确定我的帐户密码是正确的,我做错了什么?
解决方案
您通过 url 进行连接,因此您必须将密码更改为 URL 编码格式。
将“$”替换为“%24”并检查。
参考:HTML URL 编码
推荐阅读
- mysql - 如何从已发布的 wordpress 评论中删除特定的电子邮件?
- macos - AndroidStudio 3.2 在 Mojave 上启动缓慢
- css - 具有高级 CSS 选择器的表格中的动态列宽
- c - 从 linux 上的 UDPServer 向 Windows 上的 UDPClient 发送 msg 时出现问题
- elasticsearch - 带有 Elasticsearch 索引的 JanusGraph 不起作用
- java - 詹金斯有时运行一个参数,有时对所有参数运行多次
- r - 用于创建具有容量的多个资源的 While 循环
- java - 我正在尝试访问相机
- json - 使用鉴别器编码 ADT 案例类,即使键入为案例类
- windows - 检查是否安装了特定版本的程序