如何在Express和NodeJS中进行Mongoose错误的错误处理。

时间:2016-04-25 07:44:49

标签: node.js express error-handling mongoose

我有一个NodeJS应用程序,Express用作我的Web服务器,Mongoose用作MongoDB上的抽象层。现在这样写一个简单的Express路由。

module.exports.getProfile = function(req, res, next) {
    Users.findOne({
        '_id': req.user._id
    }).exec(function(err, profile) {
        if (err) {
            res.sendStatus(500);
        } else if (profile) {
            res.status(200).send(JSON.stringify({
                'profile': profile
            }));
        } else {
            res.status(400).send(JSON.stringify({
                'message': "Profile Not found"
            }));
        }
    });
};

现在我的应用程序中至少有100个这样的函数,而不是每次都写res.sendStatus(500),我想创建一个这样的函数。

var sendError = function(err, res, next) {
    if (err) {
        res.status(500).send(JSON.stringify({
            'message': "Internal server error. Couldn't connect to database. Please report this issue and try again"
        }));
        next();
    }
};

并为每个数据库调用。 if(err)sendError(err,res,next);没有工作,不知怎的,我觉得它不对。那么这种情况下的最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

您可以将Express.errorHandler用于此目的。它在Express documentation中描述。