node.js - 当我尝试连接到 mongodb 得到这个错误
问题描述
这是我的 NodeJS 代码
const express = require('express');
const cors = require('cors');
const mongoose = require('mongoose');
require('dotenv').config();
const app = express();
const port = process.env.PORT || 6000;
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://xxxxxx:xxxxxx@cluster0.jnk3w.mongodb.net/xxxxxx?retryWrites=true&w=majority
这是错误日志
(节点:3812)UnhandledPromiseRejectionWarning:MongoParseError:Object.parseOptions 不支持选项 usecreateindex(D:\Front_end\MERN_STACK\Trackerapp\tracker\backend\node_modules\mongodb\lib\connection_string.js:281:15)
at new MongoClient (D:\Front_end\MERN_STACK\Trackerapp\tracker\backend\node_modules\mongodb\lib\mongo_client.js:62:46) at D:\Front_end\MERN_STACK\Trackerapp\tracker\backend\node_modules\mongoose\lib\connection.js:785:16 at new Promise (<anonymous>) at NativeConnection.Connection.openUri (D:\Front_end\MERN_STACK\Trackerapp\tracker\backend\node_modules\mongoose\lib\connection.js:782:19) at D:\Front_end\MERN_STACK\Trackerapp\tracker\backend\node_modules\mongoose\lib\index.js:330:10 at D:\Front_end\MERN_STACK\Trackerapp\tracker\backend\node_modules\mongoose\lib\helpers\promiseOrCallback.js:32:5 at new Promise (<anonymous>) at promiseOrCallback (D:\Front_end\MERN_STACK\Trackerapp\tracker\backend\node_modules\mongoose\lib\helpers\promiseOrCallback.js:31:10) at Mongoose._promiseOrCallback (D:\Front_end\MERN_STACK\Trackerapp\tracker\backend\node_modules\mongoose\lib\index.js:1151:10)
(
node --trace-warnings ...
用于显示警告的创建位置)(节点:3812) UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志--unhandled-rejections=strict
(请参阅 https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。(拒绝 id:2)(节点:3812)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。
解决方案
现在在 mongoose 的 > 6 版本中,你不需要添加
useCreateIndex: true, useNewUrlParser: true, useUnifiedTopology: true,
你可以简单地写
{mongoose.connect(uri, {});}
推荐阅读
- android - React Native:安装“应用程序”时失败。执行 gradlew.bat 时出错
- c# - 如果条件为真,如何在while循环中重复代码行c#
- shell - 为什么shell脚本中的按位运算与C不同?
- python - 来自基于 3 列的 pandas DataFrame 的二维箱
- python - 在 NetworkX 中的节点顶部显示可变大小的圆圈
- arrays - Rust 和 C 之间二维数组的低开销类型转换
- d3.js - d3 selection.exit().remove() 不起作用,_exit 始终是 array(0)
- reactjs - 为什么在 React 中使用 useImperitaveHandle 钩子?
- c++ - C++ Sfml,如何为我的 Sprite 创建一个碰撞框
- javascript - 我怎样才能得到数组的最后一项?