【问题标题】:MongoParseError: options poolsize, usenewurlparse are not supportedMongoParseError:不支持选项 poolsize、usenewurlparse
【发布时间】: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}`)
    })
  })

【问题讨论】:

标签: node.js mongodb mern


【解决方案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,
            }
          )
          

          【讨论】:

            猜你喜欢
            • 2021-10-27
            • 1970-01-01
            • 2021-10-25
            • 2018-06-10
            • 1970-01-01
            • 2023-02-24
            • 2021-12-21
            • 2018-08-16
            • 1970-01-01
            相关资源
            最近更新 更多