next(错误)不在node.js中工作

时间:2017-07-28 14:03:37

标签: javascript node.js error-handling next

我遇到next(err)无效的问题。它会忽略错误并只加载页面而不是发送HTTP状态代码404。

ldap搜索工作正常,结果看起来像预期的那样。当else语句被命中时,它不会返回错误。 控制台确实在日志中显示failed

app.use(function(req, res, next){
    conn.search('dc=foo', opts, function (err, res) {

        assert.ifError(err)
        var entries = []

        res.on('searchEntry', function (entry) {

            entries.push(entry.object)
        })

        res.on('end', function (result) {

            conn.unbind(function (err) {

                console.log('Disconnecting')

                if (entries.length == 1) {
                    next()
                } else {
                    console.log('fail')
                    var err = new Error('Permission Denied')
                    err.status = 404
                    next(err)
                }
            })
        })
    })
})

1 个答案:

答案 0 :(得分:0)

我不认为next是这样的。如果您不希望调用下一个中间件,请不要拨打next(error)next()。改为使用:

if (entries.length == 1) {
     next()
} else {
     console.log('fail')
     return res.status(404).send('Permission Denied')
}