Node.js项目用Mongoose连接MongoDB遇MongoParseError错误
解决Mongoose连接MongoDB时的MongoParseError错误
错误根源
你调用mongoose.connect()时,错误地将mongoose.set('strictQuery', true)作为第二个参数传入。mongoose.set()方法返回的是mongoose实例本身,而非连接配置对象,Mongoose会把整个实例解析成连接选项,从而抛出那些“不支持的选项”错误。
修正代码
正确做法是先单独执行mongoose.set('strictQuery', true),再调用connect方法:
const express = require('express'); const app = express(); const mongoose = require('mongoose'); const dotenv = require('dotenv'); dotenv.config(); app.use(express.json()); // 单独设置strictQuery配置 mongoose.set('strictQuery', true); // 建立MongoDB连接 mongoose.connect( process.env.MONGODB_URI, (err) => { if (err) { console.log(`Error while connecting: ${err}`); } else { console.log('Connected to MongoDB'); } } ); app.use('/', (req, res) => { res.send('Welcome to Node js server'); }); app.listen(3001, () => { console.log('Node js server is up and running'); });
额外说明
- Mongoose 6.x及以上版本中,
useNewUrlParser、useUnifiedTopology等常用连接选项已默认启用,无需手动传入。 - 如果需要添加其他连接配置,可在
connect的第二个参数位置传入配置对象,例如:mongoose.connect(process.env.MONGODB_URI, { connectTimeoutMS: 30000 }, (err) => { ... })
内容的提问来源于stack exchange,提问作者Zabeeh Ullah
相关产品推荐
相关产品推荐

