Как преобразовать высокогорный поток в поток, читаемый узлом?

У меня есть струйные струны из горного ручья. Я хочу использовать его из внешней библиотеки (в моем случае 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.

Другие вопросы по тегам