如果要关闭连接,我想检查与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"
。
感谢您的帮助
答案 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()