Мой вопрос точно этот один. Проблема в том, что когда я применяю решение к этому вопросу, ничего не происходит - значение res.send не регистрируется. Я использую экспресс 4.16.4.
Вот мой код:
/* FILE: /app.js: */
...
const postRoute = require('./middleware/postRoute');
const myRoute = require('./routes/myRoute');
...
app.use('/', myRoute);
app.use(postRoute);
...
/* FILE: /routes/myRoute */
...
router.post('/myRoute', [], (req, res, next) => {
res.send({ status:'success', message:'Test success. Feels good, man.' });
next();
});
...
/* FILE: /middleware/postRoute */
const postRoute = function(req, res, next) {
console.log('postRoute: ');
var send = res.send;
res.send = function(chunk, encoding){
res.send = send;
if (chunk) {
console.log('postRoute chunk: ', chunk); // This statement is never reached
}
res.send(chunk, encoding);
};
next();
};
module.exports = { postRoute };
Когда я делаю POST
запрос к /myRoute
с помощью Почтальона, он регистрирует следующее: postRoute:
, и все. Второй console.log()
никогда не достигается, и, по-видимому, ни одно другое утверждение в том же function()
, что и console.log()
.
Вопрос, на который я ссылаюсь в начале моего вопроса, был с 2015 года, когда я предположил, что они использовали другую версию Express.js, и поэтому их решение не работает для меня? В моем примере кода промежуточного программного обеспечения я использовал код из вопроса, который был связан в одном из ответов на этот вопрос, потому что это решение не сработало для меня. Но это решение, очевидно, тоже не работает, иначе меня бы здесь не было - и это с 2012 года! Кто нибудь знает, какую версию Express они тогда использовали!?
Итак, чтобы повторить и завершить мой вопрос: Как использовать промежуточное ПО для записи значения, переданного res.send()
?
Последующий вопрос (но дайте мне знать, если мне лучше задать этот вопрос в отдельном вопросе): Есть ли способ вызвать промежуточное ПО после маршрута / ответа от маршрута, а не глобально. Так что router.post('/myRoute', [postRoute], (req, res, next) => {...});
вместо app.use(postRoute)
?