2013-04-04 42 views
1

我想猴子補丁快遞的res.json()res.render()結合對象與閃爍和錯誤。所以,我可以這樣做:想要猴子補丁express res.json - 有沒有更好的方法?

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會堅持這些東西到當地人的模板。

所以現在 - 猴子補丁似乎是最好的課程。我計劃在中間件中進行修改。

問題:
有沒有更好的選擇?
有沒有其他人這樣做?
有哪些缺陷? (除有我每次升級快遞的時間來更新我的代碼)

+2

看看這個答案: http://stackoverflow.com/questions/14655968/how-to-configure-the-express-response-object-to-automatically-add-attributes-to – 2013-04-04 21:37:41

+0

如果您在運行時通過中間件將它修補到內存中,則無需每次升級Express時都更新代碼。 – 2013-04-05 07:11:56

+0

如果底層的實現改變,我想重寫我的猴子補丁(可能) – mkoryak 2013-04-05 17:23:12

回答

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!'); 

不過,我想說少數真正有用的功能,只是猴子補丁,冒險。例如,在使用bodyParser中間件時,動態地將數據字段添加到響應中已經是慣例,這是res.body來的地方。如果你想對名稱衝突產生偏執,只需添加一個前綴,如res._mkFlash