节点res.write调用res.end()前的所有数据
Node res.write all data before res.end() is called
试图写入所有文件然后结束响应,但在所有写入完成之前它以某种方式调用了 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();
});
});
});
您需要在 readstream
完成后调用 next
:
readstream.on('end', function () {
next();
});
试图写入所有文件然后结束响应,但在所有写入完成之前它以某种方式调用了 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();
});
});
});
您需要在 readstream
完成后调用 next
:
readstream.on('end', function () {
next();
});