尝试编写所有文件然后结束响应,但它在所有写入完成之前以某种方式调用res.end。 我如何修复它,完成所有的写作,然后调用res.end()?
错误消息atm:错误:写完后
app.get('/api/upload', function (req, res) {
gfs.files.find({}).toArray(function (err, files) {
if (files.length === 0) {
return res.status(400).send({
message: 'File not found'
});
}
res.writeHead(200, {'Content-Type': files[0].contentType});
var i = 0;
async.each(files, function (file, next) {
file.position = i;
var readstream = gfs.createReadStream({
filename: file.filename
});
readstream.on('data', function (data) {
res.write(data);
});
readstream.on('error', function (err) {
console.log('An error occurred!', err);
throw err;
});
i++;
next();
}, function (err) {
res.end();
});
});
});
答案 0 :(得分:1)
next
完成后,您需要致电readstream
:
readstream.on('end', function () {
next();
});