使用带有错误传递选项 useUnifiedTopology: true 的 nodejs 到 MongoClient 构造函数

Posted

技术标签:

【中文标题】使用带有错误传递选项 useUnifiedTopology: true 的 nodejs 到 MongoClient 构造函数【英文标题】:Using nodejs with error pass option useUnifiedTopology: true to the MongoClient constructor使用带有错误传递选项 useUnifiedTopology: true 的 nodejs 到 MongoClient 构造函数 【发布时间】:2021-05-05 13:47:40 【问题描述】:

我正在使用 Nodejs 和 Mongodb 在 android 中创建一个聊天应用程序。

我收到此错误:

(node:49148) DeprecationWarning:当前的服务器发现和监控引擎已被弃用,并将在未来的版本中删除。使用新的 Server Discover 和 Mo nitoring 引擎,将选项 useUnifiedTopology: true 传递给 MongoClient 构造函数。

这是js文件的代码

const SocketServer = require('websocket').server
const http = require('http')
const express = require('express')
const app = express()
const mongoClient = require('mongodb').MongoClient

const server = http.createServer((req, res) => )
const url = "mongodb://localhost:27017"


server.listen(50000, ()=>
    console.log("Listening on port 50000...")
)

app.listen(60000, () => 
    console.log("Listening on port 60000...")
)

app.use(express.json())

mongoClient.connect(url,  (err, db) => 

    if (err) 
        console.log("Error while connecting mongo client")
     else 

        const myDb = db.db('myDb')
        const collection = myDb.collection('myTable')

        app.post('/signup', (req, res) => 

            const newUser = 
                name: req.body.name,
                email: req.body.email,
                password: req.body.password
            

            const query =  email: newUser.email 

            collection.findOne(query, (err, result) => 

                if (result == null) 
                    collection.insertOne(newUser, (err, result) => 
                        res.status(200).send()
                    )
                 else 
                    res.status(400).send()
                

            )

        )

        app.post('/login', (req, res) => 

            const query = 
                email: req.body.email, 
                password: req.body.password
            

            collection.findOne(query, (err, result) => 

                if (result != null) 

                    const objToSend = 
                        name: result.name,
                        email: result.email
                    

                    res.status(200).send(JSON.stringify(objToSend))

                 else 
                    res.status(404).send()
                

            )

        )

    

)

wsServer = new SocketServer(httpServer:server)

const connections = []

wsServer.on('request', (req) => 
    const connection = req.accept()
    console.log('new connection')
    connections.push(connection)

    connection.on('message', (mes) => 
        connections.forEach(element => 
            if (element != connection)
                element.sendUTF(mes.utf8Data)
        )
    )

    connection.on('close', (resCode, des) => 
        console.log('connection closed')
        connections.splice(connections.indexOf(connection), 1)
    )

)

【问题讨论】:

【参考方案1】:

这只是 mongodb 包显示的警告,以添加 useUnifiedTopology: true 选项来连接 mongodb 功能。这个问题已经解决了请点击下面的链接

Warning on Connecting to MongoDB with a Node server

【讨论】:

以上是关于使用带有错误传递选项 useUnifiedTopology: true 的 nodejs 到 MongoClient 构造函数的主要内容,如果未能解决你的问题,请参考以下文章

如何通过黄瓜选项通过带有黄瓜功能文件的命令行传递应用程序 URL?

[Catel]如何将带有构造函数参数的 ViewModel 传递给 TabService 扩展方法?

传递带有@JsonIgnore 标记的属性时抛出错误

使用带有无法识别的长选项的“getopt_long”时出现分段错误

错误:当传递带有修改行的 DataRow 集合时,更新需要有效的 UpdateCommand

使用带有 ViewPager 的选项卡时出现错误“Java.lang.IllegalStateException Activity 已被破坏”