首页 > 解决方案 > 无法将地图集与nodejs连接

问题描述

这是我的 server.js 文件

const express = require('express');
const cors = require('cors');
const mongoose = require('mongoose');

require('dotenv').config();

const app = express();
const port = process.env.PORT || 5000;

app.use(cors());
app.use(express.json());

const uri = process.env.ATLAS_URI;
mongoose.connect(uri, { useNewUrlParser: true, useCreateIndex: true }
);
const connection = mongoose.connection;
connection.once('open', () => {
  console.log("MongoDB database connection established successfully");
})



app.listen(port, () => {
    console.log(`Server is running on port: ${port}`);
});

.env 文件

ATLAS_URI=mongodb+srv://nitin:password@data.ztmkm.mongodb.net/test?retryWrites=true&w=majority

我收到此错误

(节点:16036)UnhandledPromiseRejectionWarning:错误:QueryReqWrap.onresolve 处的 queryTxt ETIMEOUT data.ztmkm.mongodb.net [as oncomplete](dns.js:203:19)(node --trace-warnings ...用于显示警告的创建位置)(节点:16036) UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志 --unhandled-rejections=strict(请参阅 https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。(拒绝 ID:1)(节点:16036)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。

标签: javascriptnode.jsmongodbmongoose

解决方案


mongoose.connect() 方法将在成功连接到您的数据库后抛出一个承诺,并且您没有编写代码来接收承诺,所以而不是这个

mongoose.connect(uri, { useNewUrlParser: true, useCreateIndex: true }
);
const connection = mongoose.connection;
connection.once('open', () => {
  console.log("MongoDB database connection established successfully");
})

用这个

const connect=mongoose.connect(uri, { useNewUrlParser: true, useCreateIndex: true });
connect.then((db)=>
{
  console.log("connected correctly to the server")
},(err)=>
{
  console.log(err)
})

推荐阅读