Sometimes, we want to read the contents of a Node.js stream into a string variable.
In this article, we’ll look at how to read the contents of a Node.js stream into a string variable.
How to read the contents of a Node.js stream into a string variable?
To read the contents of a Node.js stream into a string variable, we can return a promise that resolves the the combined chunks from the stream.
For instance, we write
const streamToString = (stream) => {
const chunks = [];
return new Promise((resolve, reject) => {
stream.on("data", (chunk) => chunks.push(Buffer.from(chunk)));
stream.on("error", (err) => reject(err));
stream.on("end", () => resolve(Buffer.concat(chunks).toString("utf8")));
});
};
to create a promise with the Promise constructor.
We call it with a callback that calls streams.on with 'data' to get the chunk from the stream and then push that to chunks with push.
Then we call on with 'end' with a callback that combines the chunks with
Buffer.concat(chunks).toString("utf8")
And then we call resolve with the buffer converted to a string with toString to use that as the promise resolve value.
Then we write
const result = await streamToString(stream);
in an async function to get the value from the stream.
Conclusion
To read the contents of a Node.js stream into a string variable, we can return a promise that resolves the the combined chunks from the stream.