我正在研究Express來創建一個簡單的JSON API,並且我不確定如何組織我的輸入參數驗證和錯誤處理。錯誤可能來自驗證步驟,也可能來自數據庫訪問步驟。這是我到目前爲止有:快速錯誤處理模式
router.use(function(req, res, next) {
validate(req.query).then(function() {
next()
}).catch(function(e) {
next(e)
})
})
router.get("/", function(req, res, next) {
someDatabaseAccess(req.query).then(function(results) {
res.json(results)
}).catch(function(e) {
next(e)
})
})
router.use(function(e, req, res, next) {
// ... (handling specific errors)
res.status(400)
res.json(someDummyResponse(e))
})
驗證看起來是這樣的:
const validate = function(q) {
return new Promise(function(resolve, reject) {
if (q.someParameter) {
if (somethingWrong(q.someParameter)) {
reject(new Error("Something wrong!"))
}
}
resolve()
})
}
這是否有道理?有什麼我應該做的不同/以一種不太複雜的方式?