我一直在爲express和node創建一個更好的架構來實現rest api。比方說,我有3種方法,我的路線中間件 -express js - 一個http請求如何與其他請求不同?
router.post('/users/:id', [
UserService.getUserById,
UserController.setUser,
MailerService.sendSubscriptionMail
]);
我設立在調用UserService.getUserById req.session.user,然後使用該設置req.session.result在UserController.setUser。現在我正在使用存儲在req.session.result中的數據向該用戶發送郵件。
UserService -
exports.getUserById = function(req, res, next) {
.
.
req.session.user = data;
.
.
};
module.exports = exports;
UserController中 -
exports.setUser = function(req, res, next) {
.
.
req.session.result = req.session.user;
.
.
};
module.exports = exports;
MailerService -
exports.sendSubscriptionMail = function(req, res, next) {
// Using req.session.result here to send email
};
module.exports = exports;
現在我有一個關於上述過程的兩個問題 -
(一)有沒有CH因爲新的http req到另一個路由(它也有這些可以修改req.session的方法)可以修改req.session.result並且MailerService.sendSubscriptionMail不會獲得它需要發送給用戶的數據,或者那個req對象會和內存中的這個完全不同嗎? (b)是否有任何其他方法在中間件之間傳輸數據而不是設置req對象?
增加了另一種方法來將它直接傳遞給'MailerService.sendSubscriptionMail()'。 – jfriend00
感謝您的幫助!我想創建一個全局處理程序,從中我可以看到需要針對該特定請求調用的所有方法,因爲當我們在另一個方法內調用方法時,我們必須在各種文件之間切換以進行一些更改。你的第二個想法是創建一箇中間件處理程序來調用它們,看起來很棒。我一定會嘗試。 –