这是一条简单的路线:
// get all users
app.get('/api/user/get-all', authenticated.yes, function(req, res) {
queryUsers.findAllUsers( function( users ){
res.json( users );
} );
});
输出将是“queryUsers.findAllUsers”函数返回的json。
这很好,但是我想通过更严格的东西来路由我所有的json输出,所以输出将是:
res.json({
success: true,
payload: users
});
这很容易手动完成,但意味着我每次都需要写出来这很多。
是否可以向“res”对象添加新功能,以启用以下内容:
res.jsonSuccess( users );
和
res.jsonFail( users );
哪个会输出
res.json({
success: true,
payload: users
});
和:
res.json({
success: false,
payload: users
});
分别
答案 0 :(得分:8)
正如loadaverage指出的那样,中间件就是你如何做到的。更具体的一点:
app.use(function(req, res, next) {
res.jsonFail = function(users) {
return res.json({
success: false,
payload: users
})
};
res.jsonSuccess = function(users) {
return res.json({
success: true,
payload: users
});
};
next();
});
然后这应该有效:
app.get("/my/route", function(req, res) {
return res.jsonSuccess(["you", "me"]);
});
答案 1 :(得分:1)
有时我想用新方法扩展当前方法。 例如,记录我发送的所有内容。
你能做什么:
app.use(function (req, res, next) {
var _send = res.send
res.send = function (data) {
console.log('log method on data', data)
// Call Original function
_send.apply(res, arguments)
})
})
答案 2 :(得分:0)
当然,你可以像往常一样写一些简单的middleware,然后是app.use(你的中间件)。