我是MongoDB 4.0.6的新手,try 使用Node/Express将其实现到我的网站中.js,但当我try 连接到mongodb+srv://${process.env.MONGOUSER}:${process.env.MONGOPASS}@main-03xkr.mongodb.net/main时,我得到了以下错误:

{错误:querySrv EREFUSED _mongodb._tcp.main-03xkr.mongodb.net

我试着连接到mongodb://localhost:27017/main,但这个does似乎有效.

以下是相关代码:

require('dotenv').config();
const mongoose = require('mongoose');

// Database
const uri = `mongodb+srv://${process.env.MONGOUSER}:${process.env.MONGOPASS}@main-03xkr.mongodb.net/main`;
const localURI = 'mongodb://localhost:27017/main';

var Project = require('./models/project');

mongoose.connect(uri, { useNewUrlParser: true });
const db = mongoose.connection;

db.once('open', () => console.log('Successfully connected to MongoDB'));
db.on('error', (e) => console.log(e));

// Routes
app.get('/', (req, res) => {
  Project.find({}, (e, projects) => {
    if (e) console.log(e);

    res.render('home.ejs', {
      projects: projects
    });
  });
});

那么,有人知道如何修复这个错误,并解释这里发生了什么吗?

推荐答案

如果遇到此错误,请try 对 node 使用旧的连接字符串.js 2.2.12或更高版本:

mongodb://<username>:<password>@main-shard-00-00-03xkr.mongodb.net:27017,main-shard-00-01-03xkr.mongodb.net:27017,main-shard-00-02-03xkr.mongodb.net:27017/main?ssl=true&replicaSet=Main-shard-0&authSource=admin&retryWrites=true

根据MongoDB的说法,SRV可能因为mongoose 而无法工作.

Mongodb相关问答推荐

MongoDB对两个串联数组进行排序

MongoDB 对特定搜索查询的响应时间较长

无法配置数据源:未指定url属性,无法为 MongoDb 配置嵌入数据源

减法聚合Mongo文档Golang

Mongoose 聚合和多级组

分组前的 MongoDb 聚合总数

如何在 MongoDB 中对字段进行自定义排序

如何在 mongodb golang 的单个更新调用中使用 $set 和 $inc?

有谁知道这个错误的修复方法(TypeError: Cannot assign to read only property ‘map’ of object '#')

以聚合顺序使用 $$ROOT

根据 Month 删除 mongodb 中的旧记录

Mongo 重启错误 -- /var/run/mongodb/mongod.pid 存在

MongoDB展开多个数组

如何返回 MongoDB 中文档的 ObjectId 或 _id?和错误$in 需要一个数组

无法从 javascript 打印 BSON 对象

使用已排序的数据获取不同的值

Java Mongodb 正则表达式查询

mongoose 使用 $cond 中的 $exists 聚合

MongoDB聚合框架的索引优化

mongoose — 判断 ObjectId 是否存在于数组中