-
-
Notifications
You must be signed in to change notification settings - Fork 51
StreamObject
StreamObject assumes that a token stream represents an object and streams out its top-level properties as assembled JavaScript objects.
{"a": 1, "b": "a", "c": [], "d": {}, "e": true}
// StreamObject will produce an object stream:
{key: 'a', value: 1}
{key: 'b', value: 'a'}
{key: 'c', value: []}
{key: 'd', value: {}}
{key: 'e', value: true}As every streamer, it assumes that individual objects can fit in memory, but the whole file, or any other source, should be streamed.
const StreamObject = require('stream-json/streamers/StreamObject');
const fs = require('fs');
const pipeline = fs.createReadStream('sample.json')
.pipe(StreamObject.withParser());
pipeline.on('data', data => console.log(data));Being based on StreamBase, StreamObject has no special API.
make() and streamObject() are two aliases of the factory function. It takes options described above, and return a new instance of StreamObject. streamObject() helps to reduce a boilerplate when creating data processing pipelines:
const {chain} = require('stream-chain');
const {parser} = require('stream-json');
const {streamObject} = require('stream-json/streamers/StreamObject');
const fs = require('fs');
const pipeline = chain([
fs.createReadStream("sample.json"),
parser(),
streamObject()
]);
let objectCounter = 0;
pipeline.on('data', () => ++objectCounter);
pipeline.on('end', console.log(`Found ${objectCounter} objects.`));Constructor property of make() (and streamArray()) is set to StreamObject. It can be used for indirect creating of filters or metaprogramming if needed.
withParser() takes one argument:
-
optionsis an object described in Parser's options. It is used to initialize both streams (aParserinstance and a stream returned bymake()).
It returns a stream produced by stream-chain, which wraps the pipeline. The most important utility of withParser() is that it correctly sets object modes of the returned stream: object mode for the Readable part and text mode for the Writable part.
This static method is created using withParser() utility. It simplifies a case when a stream should be immediately preceded by a parser.
const StreamObject = require('stream-json/streamers/StreamObject');
const fs = require('fs');
const pipeline = fs.createReadStream("sample.json")
.pipe(StreamObject.withParser());
let objectCounter = 0;
pipeline.on('data', () => ++objectCounter);
pipeline.on('end', console.log(`Found ${objectCounter} objects.`));