提问者:小点点

无法将atlas与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[as oncomplete](dns.js:203:19)处的queryTxt timeout data.ztmkm.MongoDB.NET(使用节点--trace-warnings...显示警告是在何处创建的)(节点:16036)UnhandledPromiserEjectionWarning:未处理的承诺拒绝。这个错误可能是由于抛出一个没有catch块的异步函数内部,或者是由于拒绝了一个未用.catch()处理的承诺。要在未处理的承诺拒绝时终止节点进程,请使用CLI标志--unhandled-rejections=strict(请参见https://nodejs.org/api/CLI.html#CLI_unhandled_rejections_mode)。(拒绝ID:1)(节点:16036)[DEP0018]拒绝警告:不推荐未处理得承诺拒绝.将来,未处理的承诺拒绝将以非零退出代码终止node.js进程。


共1个答案

匿名用户

mongoose.connect()方法将在成功连接到db之后抛出一个承诺,而您没有编写代码来执行该承诺,因此不是这样

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)
})