2017-07-28 165 views
0

我有問題,我的next(err)不起作用。它忽略錯誤,只是加載頁面,而不是發送HTTP狀態碼404。下一個(err)在node.js中不工作

ldap搜索正常工作,結果看起來和預期的一樣。當else語句被命中時,它不會返回錯誤。 控制檯的確顯示日誌

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) 
       } 
      }) 
     }) 
    }) 
}) 
+0

嗯,這是一個很好的4級深回調地獄。你確定'res.on('end')'應該在'res.on('searchEntry')'裏面嗎? –

+0

哈哈是啊,我的壞是輸入不CP /漿糊。我總是在這裏弄髒縮進 – H30

+0

'res.on('end')'仍然在'res.on('searchEntry')'內......如果你給我們錯誤的代碼,沒人會幫忙的 –

回答

0

failed我不認爲next作品那樣。如果您不希望調用下一個中間件,請根本不要調用next(error)next()。改爲使用:

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

謝謝,但崩潰應用與TypeError:res.status不是一個函數 – H30

+0

然後你做錯了什麼,因爲'res.status() '絕對是[express API]的一部分(http://expressjs.com/en/api.html)。 –

+0

我不是說它不是,我沒有做任何錯誤我跟着ldapjs。我的搜索工作。這只是因爲某些原因不起作用。所以風的態度。如果它工作,我不會在這裏正確的? – H30

相關問題