使用流功能后如何获得响应?
How to get a response after using stream functionality?
所以,我遇到了一个错误 "Cannot set headers after they are sent to the client"。我得到我的代码 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.log(error);
}
res.status(200).send(OK(fileObj, null, req));
});
stream.on('error', function (err) {
console.log(err);
});
}
catch (e) {
console.log(e);
}
预期结果:它不应该显示 "Cannot set headers after they are sent to the client" 响应。
可能您必须在流结束事件上发送响应。
stream.once('end', _=> res.status(200).send('OK'));
所以,我遇到了一个错误 "Cannot set headers after they are sent to the client"。我得到我的代码 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.log(error);
}
res.status(200).send(OK(fileObj, null, req));
});
stream.on('error', function (err) {
console.log(err);
});
}
catch (e) {
console.log(e);
}
预期结果:它不应该显示 "Cannot set headers after they are sent to the client" 响应。
可能您必须在流结束事件上发送响应。
stream.once('end', _=> res.status(200).send('OK'));