与 MongoDB 的连接被拒绝
Posted
技术标签:
【中文标题】与 MongoDB 的连接被拒绝【英文标题】:Connection to Mongodb rejected 【发布时间】:2020-06-21 12:05:51 【问题描述】:我是 React 和 Node 的新手,尽管几天后我的代码没有错误,但今天我的终端开始出现错误,我无法连接到我的 mongo 数据库。我使用 node server.js 命令运行我的服务器,但出现错误。任何人都可以帮助找到解决方案吗?谢谢!
错误
服务器正在端口 5000 上运行 (node:3339) DeprecationWarning:当前的服务器发现和监控引擎已被弃用,并将在未来的版本中删除。要使用新的服务器发现和监控引擎,请将选项 useUnifiedTopology: true 传递给 MongoClient 构造函数。 (node:3339) UnhandledPromiseRejectionWarning: MongoNetworkError: failed to connect to server [cluster0-shard-00-00-z8g0w.mongodb.net:27017] on first connect [MongoNetworkError: connection 4 to cluster0-shard-00-00-z8g0w。 mongodb.net:27017 关闭 在 TLSSocket。 (/Users/petka/Desktop/react-recipesnew/node_modules/mongodb/lib/core/connection/connection.js:372:9) 在 Object.onceWrapper (events.js:300:26) 在 TLSSocket.emit (events.js:210:5) 在 net.js:659:12 在 TCP.done (_tls_wrap.js:481:7) 名称:'MongoNetworkError', ] 在游泳池。 (/Users/petka/Desktop/react-recipesnew/node_modules/mongodb/lib/core/topologies/server.js:433:11) 在 Pool.emit (events.js:210:5) 在 /Users/petka/Desktop/react-recipesnew/node_modules/mongodb/lib/core/connection/pool.js:577:14 在 /Users/petka/Desktop/react-recipesnew/node_modules/mongodb/lib/core/connection/pool.js:1021:9 在回调(/Users/petka/Desktop/react-recipesnew/node_modules/mongodb/lib/core/connection/connect.js:93:5) 在 /Users/petka/Desktop/react-recipesnew/node_modules/mongodb/lib/core/connection/connect.js:113:7 在 _callback (/Users/petka/Desktop/react-recipesnew/node_modules/mongodb/lib/core/connection/connect.js:320:5) 在 Connection.errorHandler (/Users/petka/Desktop/react-recipesnew/node_modules/mongodb/lib/core/connection/connect.js:336:5) 在 Object.onceWrapper (events.js:300:26) 在 Connection.emit (events.js:210:5) 在 TLSSocket。 (/Users/petka/Desktop/react-recipesnew/node_modules/mongodb/lib/core/connection/connection.js:370:12) 在 Object.onceWrapper (events.js:300:26) 在 TLSSocket.emit (events.js:210:5) 在 net.js:659:12 在 TCP.done (_tls_wrap.js:481:7) (节点:3339)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。 (拒绝编号:1) (节点:3339)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。
server.js
const express = require("express");
const cors = require("cors");
const mongoose = require("mongoose");
const http = require('http');
const socketIO = require('socket.io');
const app = express();
const port = process.env.PORT || 5000;
app.use(cors());
app.use(express.json());
const server = http.createServer(app)
//create the socket using the service instance
const io = socketIO(server)
io.on('connection', socket =>
console.log('New user connected.')
socket.on('infoEvent', (information) =>
console.log(`Information received: $information`)
io.sockets.emit('infoEvent', information)
)
socket.on('disconnect', () =>
console.log('User disconnected')
)
)
require('dotenv').config();
const uri = process.env.ATLAS_URI;
mongoose.connect(uri, useNewUrlParser:true, useCreateIndex:true);
const connection = mongoose.connection;
//when the connection is open
connection.once('open', () =>
console.log("MongoDB connection established successfully")
)
const userrecipesRouter = require('./routes/userrecipes');
const usersRouter = require('./routes/users');
//require and use the files route
app.use('/userrecipes', userrecipesRouter);
app.use('/users', usersRouter);
app.listen(port, () =>
console.log(`Server is running on port $port`);
);
【问题讨论】:
您的数据库托管在哪里?它还在运行/健康吗? 【参考方案1】:尝试像这样连接:
mongoose.connect(
uri,
useNewUrlParser:true,
useCreateIndex:true,
useUnifiedTopology: true //add this option
);
【讨论】:
这到底是做什么的?以上是关于与 MongoDB 的连接被拒绝的主要内容,如果未能解决你的问题,请参考以下文章