想要猴子补丁快递res.json - 有更好的方法吗?

时间:2013-04-04 21:29:20

标签: node.js express

我想使用补丁快递res.json()res.render()将对象与闪烁和错误相结合。所以我可以这样做:

res.flash('error', 'You suck!');
res.formError('moneyInput', 'Give me more!');
... later
res.json({success: false});

它将返回: {flashes: [{error: 'You suck!'}], errors: [{'moneyInput': 'Give me more!'}], content: {success: false}}

同样res.render会将这些内容粘贴到本地模板中。

所以现在 - 猴子补丁似乎是最好的课程。我计划在中间件中进行monkeypatch。

问题:
还有更好的选择吗?
还有其他人这样做过吗? 有什么陷阱? (除了每次升级快递时都要更新我的代码)

1 个答案:

答案 0 :(得分:0)

一种替代方法是将待处理数据存储在响应对象上但不修补其中的方法:

function flash (res, type, message) { //stick this in a shared module
    res._flash = {};
    res._flash[type] = message;
    return res;
}
//in some handler function
flash(res, 'error', 'You suck!');

但是,我会说一些真正有用的功能,只需猴子修补它并承担风险。例如,在使用res.body中间件时,将响应数据字段动态添加到bodyParser所在的位置已经是惯例。如果您想对名称冲突产生偏执,只需添加res._mkFlash之类的前缀。