1.0.5 • Published 3 years ago
csv-encode-stream v1.0.5
csv-encode-stream
Поток для трансформации массива строк (или объектов) в CSV строку
Установка
npm i csv-encode-stream
или
yarn add csv-encode-stream
Использование
const CSVStream = require('csv-encode-stream')
const writer = CSVStream([options])writer является Transform stream
Параметры по умолчанию
{
separator: ',', // разделитель полей
newline: '\n', // разделитель строк
headers: undefined, // массив заголовков
sendHeaders: true, // признак вывода заголовка
useAsync: true, // асинхронный режим вызова
maxCount: 200 // кол-во строк для освобождения event loop
}По умолчанию установлен асинхронный режим (параметр useAsync). В этом случае после обработки каждых maxCount строк происходит освобождение even loop - выполняются все накопленные в нем задачи.
Для параметра headers используется следующая логика:
headers- массив строк. Строки будут использованы как заголовки столбцов в том же порядке, как они указаны в массиве.headers- массив объектов с ключамиkeyиlabel. В этом случае заголовками столбца являются значения из поляlabel. Полеkeyиспользуется для адресации полей объекта данных. Порядок столбцов определяется порядком объектов в массивеheaders. Столбцы, отсутствующие в поляхkey- не выводятся. Эта логика - для случая когда на вход потока передается объект. Если на вход потока передается массив - полеkey- не задействуется- если параметр не задан а на вход потока передается объект, то используются наименования ключей этого объектах. Это вариант валиден только для случая, когда в качестве данных на вход потока передается объект.
- в случае если параметр не задан, на вход потока передается массив и параметр
sendHeadersустановлен вtrue(значение по умолчанию) - выбрасывается ошибка.
Если параметр sendHeaders установлен в false, строка заголовков не выводится
Пример автоматических заголовков:
const CSVStream = require('csv-encode-stream')
const writer = CSVStream()
writer.pipe(fs.createWriteStream('out.csv'))
writer.write({ hello: 'world', foo: 'bar', baz: 'taco' })
writer.end()
// вывод в файл:
//
// hello,foo,baz
// world,bar,tacoПример с заданным заголовком:
const CSVStream = require('csv-encode-stream')
const writer = CSVStream({ headers: ['hello', 'foo'] })
writer.pipe(fs.createWriteStream('out.csv'))
writer.write([['world', 'bar']])
writer.end()
// вывод в файл:
//
// hello,foo
// world,barПример без вывода строки заголовка:
const CSVStream = require('csv-encode-stream')
const writer = CSVStream({ sendHeaders: false })
writer.pipe(fs.createWriteStream('out.csv'))
writer.write({hello: "world", foo: "bar", baz: "taco"})
writer.end()
// вывод в файл:
//
// world,bar,tacoТесты и инструмент для командной строки - планируются