OBSOLETE: since node@18, there is now a stream.toArray() function
Concatenate a readable stream's data into a single array.
You may also be interested in:
- raw-body for strings
var toArray = require('stream-to-array')
Returns all the data objects in an array. This is useful for streams in object mode if you want to just use an array.
var stream = new Stream.Readable()
toArray(stream, function (err, arr) {
assert.ok(Array.isArray(arr))
})
If stream
is not defined, it is assumed that this
is a stream.
var stream = new Stream.Readable()
stream.toArray = toArray
stream.toArray(function (err, arr) {
})
If callback
is not defined, then it returns a promise.
toArray(stream)
.then(function (parts) {
})
If you want to return a buffer, just use Buffer.concat(arr)
toArray(stream)
.then(function (parts) {
const buffers = parts
.map(part => util.isBuffer(part) ? part : Buffer.from(part));
return Buffer.concat(buffers);
})