2016-04-25 107 views
0

我想在Restify中重寫默認的下一個。例如。現在我有這樣的代碼尊重:「覆蓋」默認下一步

server.post('/names', function (req, res, next) { 
    names = req.params.names; 
    if (!Array.isArray(names)) { 
    return next(new restify.errors.BadRequestError('names field is wrong or missing')); 
    } 
    res.send({ code: "OK" }); 
    return next(); 
}); 

我希望它只是

server.post('/names', function (req, res, next) { 
    names = req.params.names; 
    if (!Array.isArray(names)) { 
    return next(new restify.errors.BadRequestError('names field is wrong or missing')); 
    } 
    // Add names to DB 
    return next(); 
}); 

next(非錯誤結果)就像是

function next(res) { 
    if (!body.hasOwnProperty("code")) { 
    body["code"] = "OK"; 
    } 
    res.send(body); 
} 

什麼是最好的方式來實現這個?

+0

您的代碼在每個變量聲明中缺少'var'關鍵字。這很糟糕,因爲沒有'var',所有東西都變成全局的。仔細檢查你的代碼,沒有'var'的每個變量聲明都是一個等待發生的錯誤。像[jshint](http://jshint.com/)這樣的工具可以幫助您找到這些錯誤。 – Tomalak

+0

除此之外,您的問題還不清楚。不要解釋你認爲代碼應該是什麼樣子,解釋你想實現的目標。 – Tomalak

+0

這只是草圖。這個想法只是將結果對象發送給最後一個下一個,而不是執行res.send + next。 – Ximik

回答

0

我想你可能正在尋找一個處理程序,在鏈中的所有其他處理程序完成後執行。考慮「之後」事件處理程序。在文檔中他們顯示an example for audit logging

您應該可以根據需要使用相同的東西來更新響應主體。該代碼可能是這個樣子......

server.on('after', function (request, response, route, error) {}); 

請記住,這仍然需要你return next();所有鏈中的其他處理程序。

+0

不錯的選擇。謝謝! – Ximik