javascript - 无法将地图集与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 进程。
解决方案
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)
})