javascript next(err)在node.js中不工作

eufgjt7s  于 2023-05-21  发布在  Java
关注(0)|答案(1)|浏览(123)

我的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)
                }
            })
        })
    })
})
cigdeys3

cigdeys31#

我不认为next是这样工作的。如果您不希望调用下一个中间件,那么根本不要调用next(error)next()。请改用:

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

相关问题