2015-12-06 33 views
15

'daki yanıt nesnesine özel işlev ekleme API uygulamamda farklı bölümlerdeki hatalar için sabit bir yanıtım var. Görebildiğiniz gibi, res.status(400).json({"error": "Invalid input"}), aslında, farklı dosya ve modüllerde çok tekrar ediyor.Node.JS

ben tekrarını ortadan kaldırır modül-işlevi invalidInput(res), oluşturabilir, ama gerçekten bu res.invalidInput() gibi res nesnenin küresel bir parçası olmak istiyorum.

JS/Node.JS'de nasıl yapabilirim?

router.get("/users", function(req, res) { 
    // ... 
    if (error) { 
     return res.status(400).json({"error": "Invalid input"}); 
    } 
}); 

router.get("/items", function(req, res) { 
    // ... 
    if (error) { 
     return res.status(400).json({"error": "Invalid input"}); 
    } 
}); 

// etc 

cevap

14

Kendi özel ara katman yazılımınızı kullanabilirsiniz.

router.use(function(req, res, next) { 
    res.invalidInput = function() { 
     return res.status(400).json({"error": "Invalid input"}); 
    }; 
    next(); 
}); 

ve sonra da rota işleyicilerindeki res.invalidInput() yapabilirsiniz: rota işleyicisi yukarıda Bunu biryere ekleyin.