Что делает koa-write? - PullRequest
       73

Что делает koa-write?

0 голосов
/ 06 мая 2020

В моем проекте используется платформа Koa, и я ищу способ заменить res.write Express для потоковой передачи больших наборов данных в CSV.

Могу ли я использовать koa-write для этого? Что-то вроде:

var write = require('koa-write');

router.get('/', (ctx, next) => {
    ctx.response.set('Content-Type', 'text/csv');
    ctx.response.set('Content-Disposition', 'attachment; filename=data.csv');
    write(ctx, "1,2,3,4,5\n");
});

Я пробовал, но, похоже, не работает.

1 Ответ

0 голосов
/ 06 мая 2020

вы можете просто создать поток для чтения и назначить его ctx.body

const Koa = require("koa");
const { Readable } = require("stream");

const app = new Koa();
const s = new Readable();

app.use((ctx) => {
  if (ctx.request.url === "/") {
    ctx.body = s;
    s.push('"1,2,3,4,5\n');
    s.push("test test");
    s.push(null); // indicates end of the stream
  } else {
    ctx.throw(404);
  }
});

app.listen(8080);

Или, если у вас уже есть поток, просто назначьте его телу. в противном случае создайте новый поток и данные pu sh к нему. Завершите поток с помощью null

...