【问题标题】:What does koa-write do?koa-write 是做什么的?
【发布时间】:2020-05-06 08:50:27
【问题描述】:

我的项目使用 Koa 框架,我正在寻找一种方法来替换 Express 的 res.write 以将大型数据集流式传输到 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");
});

我试过了,但它似乎不起作用。

【问题讨论】:

  • 您是否尝试过像示例所示那样编写它。 ?例如。 ctx.body= PassThrough(); & co(function * 等等?

标签: javascript node.js stream koa koa2


【解决方案1】:

您可以创建一个可读流并分配给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);

或者,如果您已经有一个流,只需分配给 body。否则,创建一个新的 Stream 并将数据推送到它。使用null 终止流

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-30
    • 2017-05-01
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    相关资源
    最近更新 更多