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

How to stream JSON request in 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();
                }

            }

        });

您可以提供 false 到 payload:

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

这将 return 有效负载中的流未修改。 然后就可以使用JSONStream模块来处理大流文件了。

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