Я пытаюсь обернуть голову пропущением данных с помощью промежуточного программного обеспечения, используя объекты запроса и ответа в Express.js, и по какой-то причине данные застревают в функции обратного вызова в самом промежуточном программном обеспечении ,Проблема с передачей данных из промежуточного программного обеспечения
Во-первых, вот обычай промежуточного слоя:
// Get list of admins
export var listAdmins = function(req, res, next) {
var admin = [];
client.admins.list((res) => {
var body = res.body.admins;
// var admin = [];
body.forEach(function (body) {
if (body.type === 'admin') {
admin.push(body);
}
});
req.admins = admin;
console.log(req.admins);
console.log('Finished fetching admin data');
next();
});
}
закомментирована console.log в функции обратного вызова дает точные данные, которые я хочу передать, и объект проходит хорошо. К сожалению, если я попытаюсь захватить это за пределами обратного вызова, он всегда появляется как неопределенный. Я переместил объект массива admin за пределы обратного вызова, думая, что это проблема с областью, но ничего не решила.
Поскольку это функция, вызывающая функцию из API, я предполагаю, что это способствует моей проблеме. Я хочу многократно использовать многие из этих функций, но если это причина для передачи данных, я все уши к предложениям. Все, что может помочь в использовании этой структуры, высоко ценится. :)
Заранее спасибо!
EDIT: Да, перемещение кода во вложенный функциональный блок разрешено для его правильной установки.
Да, я думал, что это очевидно, но я думаю, что вы пытаетесь сказать, что все, что ожидается, должно быть в этой функции? Что касается этого, то req.admins все еще не оставляют этот бит промежуточного программного обеспечения. Как только промежуточное ПО завершено, свойство в запросе исчезнет, даже если оно передается через следующую функцию в следующее промежуточное программное обеспечение. – DBrown
Если у вас все еще возникают проблемы после реализации предлагаемого мной решения, вам нужно будет опубликовать более подходящий код в вашем вопросе, который продемонстрирует проблему. – mscdex
После сброса запуска отладки, чтобы проверить, был ли он установлен, он показывался за пределами промежуточного ПО, поэтому я предполагаю, что это было изменение, которое babel-watch не применялось вначале. Спасибо вам за помощь. – DBrown