Итак, я получаю сообщение об ошибке «Невозможно установить заголовки после их отправки клиенту». Я понимаю, что мой код res.status(200).send(OK(fileObj, null, req)); является синхронным. Я не знаю, как получить ответ после того, как все мои потоки готовы.
try {
const fileObj = [];
const stream = await minioClient.listObjects(bucket, '', true);
await stream.on('data', async (obj, error) => {
await fileObj.push(obj);
if (error) {
console.info(error);
}
res.status(200).send(OK(fileObj, null, req));
});
stream.on('error', function (err) {
console.info(err);
});
}
catch (e) {
console.info(e);
}
Ожидаемый результат: он не должен показывать мне ответ «Невозможно установить заголовки после их отправки клиенту».
Вероятно, вы должны отправить ответ на событие окончания потока.
stream.once('end', _=> res.status(200).send('OK'));
Используйте событие
end
, которое вызывается только после завершения трансляции.stream.on('end', () => res.send(OK(fileObj, null, req));)