TL; DR 假設客戶端響應以其他方式管理,則不調用beforeRemote中next()的潛在問題/缺點是什麼拒絕beforeRemote,我可以使用res.send還是必須使用next()?
嗨。
我有一個模型中的基礎驗證函數beforeRemote鉤子,如果某些條件不符合,需要返回拒絕給客戶端。
我在早期的路由攔截中使用res.send,它完美地工作,並且在beforeRemote中的res.send也似乎工作。但是我很擔心文檔非常清楚地說明必須調用「next」,這意味着我無法手動res.send。
我如何做到這一點在前面的路線
res.statusCode = 401;
return res.send("Access denied");
如何發揮它的安全
err = new Error("Access Denied");
err.status = 401;
delete err.stack;
return next(err);
我更喜歡第一種方法,因爲我沒有花「時間」拋出錯誤並在回撥之前刪除堆棧跟蹤(在其他地方需要,因此不能全局刪除)。 res.send對我來說似乎更清潔,但這可能是一種誤解? 最後,我不確定是否有任何長期缺陷沒有結束遠程「在環回上下文」((ctx。)res.send是「只是」表達)。
是。接下來傳遞「正確」的方式將允許一些額外的處理,res.send將在哪裏結束鏈。但在這種情況下,這正是我想要的,這是一個基本的拒絕/要求,我沒有想到除了拒絕客戶之外,還有什麼需要做任何事情。 –
所以問題的核心仍然是:在beforeRemote –
中調用next()的潛在問題/缺點是什麼我想說你的情況沒有,你只是結束請求/響應循環早。但是可能有一個缺點。既然你沒有接下來的調用,我很肯定你不能使用[debug strings]正確調試你的服務器(https://docs.strongloop.com/display/public/LB/Setting+debug+strings )用於強大的遠程處理。 – Overdrivr