如何通过高地从远程JSON数组创建对象流?

时间:2016-12-11 14:34:16

标签: javascript arrays typescript stream highland.js

通过以下网址http://foo.bar/overview获取JSON:

const request = request.get('http://foo.bar/overview');

在包含对象数组的JSON响应中产生:

[
    {
        id: 1,
        narf: 'foo',
        poit: 'bar',
    },
    {
        id: 2,
        narf: 'fizz',
        poit: 'buzz',
    },
]

我现在正在尝试设置包含数组中每个对象的高地流。然而,我似乎只能从请求的整个响应中构建它,这似乎首先会对整个流方法起反作用。

我的第一个天真的解决方案是通过以下方式构建它:

let body: [];
request.on('data', (chunk: any) => {
    body.push(chunk);
}).on('end', () => {
    const responseData = JSON.parse(Buffer.concat(body).toString());
    _(responseData) // now I have the stream
});

挖掘我也意识到高地支持从请求对象本身设置流:

_(request).map((bufferedResponse: Buffer) => {
    const overview = <Overview[]> JSON.parse(bufferedResponse.toString()); // again this is the entire respone already
    return _(overview); // now I have the stream
});

如何在不使用存储在内存中的整个响应的情况下,动态地从远程JSON创建一个对象数组流?

1 个答案:

答案 0 :(得分:1)

我正在尝试oboejs,可以通过以下方式构建一个高地流:

1
2

打印:

cell.id = 'tdp1' + k_id;