MongoParseError:不支持选项 poolsize、usenewurlparse

Posted

技术标签:

【中文标题】MongoParseError:不支持选项 poolsize、usenewurlparse【英文标题】:MongoParseError: options poolsize, usenewurlparse are not supported 【发布时间】:2021-09-25 16:07:34 【问题描述】:

我在运行“nodemon server”时收到错误“MongoParseError: options poolsize, usenewurlparse are not supported”。

这里是设置mongodb连接的代码:

import app from "./server.js"
import mongodb from "mongodb"
import dotenv from "dotenv"

dotenv.config()
const MongoClient = mongodb.MongoClient

const port = process.env.PORT || 8000

MongoClient.connect(
  process.env.RESTREVIEWS_DB_URI,
  
    poolSize: 50,
    wtimeout: 2500,
    useNewUrlParse: true,
    
  )
  .catch(err => 
   
    console.error(err.stack)
    process.exit(1)
  )
  .then(async client => 
   
    app.listen(port, () => 
      console.log(`listening on port $port`)
    )
  )

【问题讨论】:

您使用的是哪个版本的驱动程序?他们刚刚发布 4.0,不再使用 useNewUrlParser。 github.com/mongodb/node-mongodb-native/blob/4.0/docs/… 你的解决方案是什么? 【参考方案1】:

将此配置用于猫鼬

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

mongoose.Promise = global.Promise;
mongoose.set('useNewUrlParser', true);
mongoose.set('useFindAndModify', false);
mongoose.set('useCreateIndex', true);
mongoose.set('useUnifiedTopology', true);
mongoose.connect(your mongodb URI).then(()=> 
    app.listen(PORT, () => 
        console.log(`Listening on port` + PORT);
    )
).catch((e) => console.log(e))

并且 app.listen 不是一个异步函数,您不需要为此使用 async

【讨论】:

【参考方案2】:

某些 MongoClient 选项已被弃用。

MongoClient.connect(
    process.env.RESTREVIEWS_DB_URI,
    
        maxPoolSize: 50, 
        wtimeoutMS: 2500,
        useNewUrlParser: true
    

).catch(err => 
    console.error(err.stack)
    process.exit(1)

【讨论】:

【参考方案3】:

该版本停止支持 poolsize、wtimeout 和 useNewUrlParse。用我的编辑替换您的代码。

import app from "./server.js";
import mongodb from "mongodb"
import dotenv from "dotenv"
dotenv.config()
const MongoClient = mongodb.MongoClient

const port = process.env.PORT || 8000

MongoClient.connect(
    process.env.RESTREVIEWS_DB_URI,
    
        maxPoolSize:50,
        wtimeoutMS:2500,
        useNewUrlParser:true
    
)
.catch(err => 
    console.error(err.stack)
    process.exit(1)
)
.then(async client => 
    app.listen(port, () => 
        console.log('listening on port '+port)
    )
)

【讨论】:

【参考方案4】:
const mongoose = require('mongoose');
require('dotenv').config();
const user = process.env.mongoUser;
const pass = process.env.mongoPass;
const url = `mongodb+srv://$user:$pass@cluster0.asqnt.mongodb.net/MyDB`;

mongoose.connect(url, 
    useNewUrlParser: true,
    useUnifiedTopology: true,
    useCreateIndex: true
)
.then(console.log('connecting'))
.catch(err => console.log(`error: $err`))

【讨论】:

请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助,质量更高,更有可能吸引投票。【参考方案5】:

当我注意到这一点时,我正在尝试启动服务器:


   useNewUrlParser: true,
   useUnifieldTopology: true,
   useFindAndModify: false

它们已被弃用。看看这本出版物,有效的是来自@Jinoy Varghese 的出版物。 我给你留下我的蒙古配置代码来连接数据库。

const mongoose = require('mongoose')
require('dotenv').config( path: '.env' )

const connectDB = async () => 
    try 
        await mongoose.connect(process.env.DB_MONGO, 
            maxPoolSize: 50,
            wtimeoutMS: 2500,
            useNewUrlParser: true
        )
        console.log('DB connected ')
     catch (err) 
        console.log(err)
        process.exit(1)
    

module.exports = connectDB

【讨论】:

【参考方案6】:

在 MongoDB-native 潜水员更改为 4.x 后, 你只需要改变MongoClientOptions interface:

你有这个:

MongoClient.connect(
  process.env.RESTREVIEWS_DB_URI,
  
    poolSize: 50, // maxPoolSize
    wtimeout: 2500, // wtimeoutMS
    useNewUrlParse: true, // feel free to remove, no longer used by the driver.
    
  )

您需要:

MongoClient.connect(
  process.env.RESTREVIEWS_DB_URI,
  
    maxPoolSize: 50,
    wtimeoutMS: 2500,
  
)

【讨论】:

以上是关于MongoParseError:不支持选项 poolsize、usenewurlparse的主要内容,如果未能解决你的问题,请参考以下文章

我的ThinkPad T440P POO,无线网络总是连接不上,网卡型号Intel wireless-N 7260.怎么处理?

MongoParseError:权限部分未提供用户名

MongoParseError 连接到无服务器 Atlas DB

MongoParseError 连接到无服务器 Atlas DB

嵌套服务器未连接到 MongoDB 云 UnhandledPromiseRejectionWarning: MongoParseError: URI malformed

无法连接到数据库MongoParseError: Unescaped at-sign in authority section