node.js - 通过 mongoose 连接到 MongoDB 会出现 auth failed 错误

标签 node.js express mongoose

我正在尝试使用如下连接字符串连接到我的 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 ENCODINGS

关于node.js - 通过 mongoose 连接到 MongoDB 会出现 auth failed 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55574887/

相关文章:

jquery - 我想在单击按钮时在 DataTable 中填充数据,默认情况下它应该显示没有可用数据

node.js - 如何从 Mongoose 返回的对象中删除属性

node.js - 如何使用Node+Express渲染多个 View

node.js - SailsJS : Undo API Generation & Clean, API 安全删除

node.js - 恢复 Brain.js 神经网络模型的训练

javascript - 无法获取路由 express /nodejs

node.js - 模拟请求对象不适用于 Node.js 中的测试

MongoDB如何通过搜索混合模式字段来查找文档?

node.js - Mongoose $near 查询返回解析错误

javascript - Mongoose 中的链静态方法不起作用