如何在Hapijs中流式传输JSON请求?

时间:2018-08-16 09:07:33

标签: node.js hapijs

我有一个非常大的JSON请求,这导致413错误。我正在探索解决此问题的替代方法(不增加请求大小),并发现可以选择流式传输。但是,我找不到流JSON请求的任何示例。我怎样才能做到这一点?下面是我的代码

this.server.route({
            method: 'POST',
            path: '/vov',
            config: {
                payload: {
                    output: 'stream',
                    allow: ['application/json','multipart/form-data'] 
                },
                handler: (request, reply) => {

                    // request.setEncoding('utf8');
                    let payload = request.payload;
                    this.onMessage(payload);
                    // payload.on('data', (chunk) =>{
                    //     console.log(chunk);
                    //     // this.onMessage(payload);
                    //     // setTimeout(() => {return reply.continue()},30000);
                    // });
                    // payload.on('end', (chunk) =>{
                    //     console.log(chunk);
                    //     this.onMessage(payload);
                    //     setTimeout(() => {return reply.continue()},30000);
                    // });

                    // return reply.continue();
                }

            }

        });

1 个答案:

答案 0 :(得分:1)

您可以向有效负载提供false

payload: {
    output: 'stream',
    parse: false
}

这将返回未经修改的流。 然后,您可以使用JSONStream模块来处理大流文件。

const payload = request.payload;
payload.pipe(JSONStream.parse(options))
  .on('data', (data) => {
    // handle your logic
  })