我如何使用try / catch块进行MongoDB连接

时间:2019-07-04 07:40:50

标签: node.js mongodb

如果要关闭连接,我想检查与MongoDB的连接,我想给自己发送电子邮件。我似乎无法理解我想做的try / catch元素-我对JavaScript还是很陌生。

到目前为止,这是我的代码:

const MongoClient = require('mongodb').MongoClient;
const url = "mongodb://myserver:port/";

function check() {
    MongoClient.connect(url, {useNewUrlParser: true}, async (err, db) => {
            if (err) throw err;
            console.log(err)

        try {
            if(err == "MongoNetworkError") throw "No connection"
        }

        catch(err) {
            console.log("no connection")
        }

})
}

建立连接后,它会打印null,当我通过关闭服务器来触发错误时,它不会打印"no connection"

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

在连接过程中出现错误时,您将拥有err != null。这表明存在连接错误,您可以在那里发送电子邮件。

您不需要为此使用自定义的try-catch块。

const MongoClient = require('mongodb').MongoClient;
const url = "mongodb://myserver:port/";

function check() {
    MongoClient.connect(url, {useNewUrlParser: true}, async (err, db) => {
            if (err) { //enter here whenever there is error
              console.log(err) // this gives you more information about the connection error
              if(err instanceof MongoClient.MongoNetworkError) {
                 console.log("no connection") // you can log "no connection" here
                //send email here
              }
            } 
            // go here if no error
    })         
}

答案 1 :(得分:0)

由于MongoClient.connect返回了一个承诺,因此您可以使用async/await来检查任何错误以及从连接返回的客户端:

async function check() {
    try {
        const client = MongoClient.connect(url, { useNewUrlParser: true })

        if (!client) {
            // Send email
        }
    } catch(err) {
        if(err == "MongoNetworkError") {
            console.log("no connection")
        }

        console.log(err)
        // Send email
    }
}

check()