为什么此MongoDB错误功能无法正常工作?

时间:2019-07-08 09:12:15

标签: javascript node.js mongodb

我正在尝试与Mongo数据库建立连接,如果出现连接错误,我需要它来发送电子邮件通知我。它包含在email()函数中。

这是我一直在尝试的代码:

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

MongoClient.connect(url, {useNewUrlParser: true}, async (err, db) => {
    if (err) throw err;
    var dbo = db.db("my_collection");

}, async function (err) {
    console.log("No database connection");
    email("Database is down")
});

这很简单,如果连接失败,我希望它向我发送电子邮件。但是,如果我在与数据库连接时运行此程序,它将运行(err)函数并发送电子邮件,我只希望它在没有数据库连接时运行。

1 个答案:

答案 0 :(得分:1)

您正在使用第二个回调,该回调在Mongo Node Native API中不存在,因此将不被使用。

相反,请使用第一个回调并检查您的err参数是否不为空:

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

MongoClient.connect(url, {useNewUrlParser: true}, async (err, db) => {
    if (err) {
        console.log("No database connection");
        email("Database is down")
        return;
    }
    var dbo = db.db("my_collection");
});