Как преобразовать высокогорный поток в поток, читаемый узлом?
У меня есть струйные струны из горного ручья. Я хочу использовать его из внешней библиотеки (в моем случае Amazon S3), и для его SDK мне нужен стандартный узел Readable Stream.
Есть ли способ превратить поток Highland в ReadStream из коробки? Или я должен преобразовать это сам?
1 ответ
Похоже, что нет встроенного способа преобразования потока Highland в Node Stream (согласно текущим документам Highland).
Но поток Highland может быть передан в поток Node.js.
Таким образом, вы можете использовать стандартный поток PassThrough для достижения этой цели в 2 строки кода.
PassThrough stream - это в основном ретранслятор. Это тривиальная реализация потока Transform (как для чтения, так и для записи).
'use strict';
const h = require('highland');
const {PassThrough, Readable} = require('stream');
let stringHighlandStream = h(['a', 'b', 'c']);
let readable = new PassThrough({objectMode: true});
stringHighlandStream.pipe(readable);
console.log(stringHighlandStream instanceof Readable); //false
console.log(readable instanceof Readable); //true
readable.on('data', function (data) {
console.log(data); // a, b, c or <Buffer 61> ... if you omit objectMode
});
Он будет генерировать строки или буферы в зависимости от флага objectMode.