У меня есть этот код:
app.post('/pst', function(req, res) {
var data = req.body.convo;
res.render('waiting.ejs'); //ADDED THIS
myFunc(data).then(result => {
res.render('success.ejs'); //THEN THIS
//---------------------------------
//clever way to send text file to client from the memory of the server
var fileContents = Buffer.from(result, 'ascii');
var readStream = new stream.PassThrough();
readStream.end(fileContents);
res.set('Content-disposition', 'attachment; filename=' + fileName);
res.set('Content-Type', 'text/plain');
readStream.pipe(res);
//--------------------------------------
}).catch( .....
Что я хочу сделать, это когда есть POST,
1. захватить информацию
2. сделать res.render ()
3. запустить функцию с почтовой информацией в качестве параметров
4. Сделайте этот фрагмент кода, который позволит клиенту загружать данные из памяти в виде TXT-файла.
5. сделать еще один res.render ()
Все работает, если исключить два res.render (). После того, как я это сделаю, я не могу установить заголовки. Я получаю эту ошибку.
Error: Can't set headers after they are sent.
Так что я подумал о возможном решении.
Возможно ли, что app.post () получит данные поста и выполнит res.render ().
Затем верните данные публикации, чтобы другая часть кода обработала вызов функции с этими данными в качестве параметра, а затем выполнила манипуляцию с заголовком, а затем, наконец, выполнила последнюю функцию res.render ().
Имейте в виду, что это файл route.js.