Size: a a a

Node.js — русскоговорящее сообщество

2020 January 10

AZ

Artem Zuev in Node.js — русскоговорящее сообщество
причем вернуть можно вообще хедером с адресом редиректа
источник

Ð

Ð in Node.js — русскоговорящее сообщество
или через память если там файлы не большие
источник

AK

Andrey Korobeynikov in Node.js — русскоговорящее сообщество
Ð
или через память если там файлы не большие
Вооо , как через память сделать
источник

AK

Andrey Korobeynikov in Node.js — русскоговорящее сообщество
???
источник

AZ

Artem Zuev in Node.js — русскоговорящее сообщество
имя файла делать как хеш параметров выборки и в случае обрыва связи или повторного запроса можно не в базу лезть, а сразу файло выкидывать (если нечастые запросы, то кеш можно и раз в сутки чистить)
источник

Ð

Ð in Node.js — русскоговорящее сообщество
вместо файл стрима - мемори стрим в буфер
источник

AZ

Artem Zuev in Node.js — русскоговорящее сообщество
Ð
или через память если там файлы не большие
через память если делать, то тем более потоки нафиг не сдались - считать все в память, архивнуть на лету и выплюнуть в респонс
источник

AK

Andrey Korobeynikov in Node.js — русскоговорящее сообщество
у ноды меомри стрим есть из коробки?
источник

AZ

Artem Zuev in Node.js — русскоговорящее сообщество
поток нужен в основных двух случаях:
- когда нужно передать/обработать ну оооочень дохрена объема данных и минимизировать ресурсные затраты
- когда данные идут постоянно и непрерывно и с ними нужно что-то делать, но тут каждая партиция должна быть "атомарной" что ли
источник

AZ

Artem Zuev in Node.js — русскоговорящее сообщество
Andrey Korobeynikov
у ноды меомри стрим есть из коробки?
источник

AK

Andrey Korobeynikov in Node.js — русскоговорящее сообщество
Artem Zuev
поток нужен в основных двух случаях:
- когда нужно передать/обработать ну оооочень дохрена объема данных и минимизировать ресурсные затраты
- когда данные идут постоянно и непрерывно и с ними нужно что-то делать, но тут каждая партиция должна быть "атомарной" что ли
Мне кажется со временем столкнусь с первым кейсом
источник

AZ

Artem Zuev in Node.js — русскоговорящее сообщество
вот посмотри суть вопроса и сразу же первый ответ... думаю, тут тебе самому все сразу станет понятно... просто из ответа на проблему тебе нужно выплевывать свою строку, которую будешь формировать построчно в процессе чтения строк из БД через курсор
источник

Ð

Ð in Node.js — русскоговорящее сообщество
Andrey Korobeynikov
у ноды меомри стрим есть из коробки?
я бы на твоем месте сделал просто из базы в стрим респонса, и не морочил голову. Буфер побольше настроить и ок.
источник

AK

Andrey Korobeynikov in Node.js — русскоговорящее сообщество
тоесть мне достаточно вернуть стрим в боди и должно быть все тип топ ?
источник

AZ

Artem Zuev in Node.js — русскоговорящее сообщество
Ð
я бы на твоем месте сделал просто из базы в стрим респонса, и не морочил голову. Буфер побольше настроить и ок.
чтобы такое сделать, ему нужно по сути сам запрос сформировать так, чтобы он ему отдавал готовый CSV - чтобы перенаправить потоки...
источник

Ð

Ð in Node.js — русскоговорящее сообщество
не вернуть а пайпуть, но только после заголовка с контент тайпом, и только если из базы действительно csv стрим
источник

AZ

Artem Zuev in Node.js — русскоговорящее сообщество
запрос к БД имею ввиду... знаю, что ты не любитель ORM - такое можно разве получить простым SQL-запросом без бубна?
источник

Ð

Ð in Node.js — русскоговорящее сообщество
если из базы не scv стрим, то тебе нужно либо делать курсор, либо получать массив целиком (привет мемори стрим!) и делать из него строку scv вручную через join и врайтить в респонс
источник

AK

Andrey Korobeynikov in Node.js — русскоговорящее сообщество
Artem Zuev
чтобы такое сделать, ему нужно по сути сам запрос сформировать так, чтобы он ему отдавал готовый CSV - чтобы перенаправить потоки...
const queryBuilder = await this._posOrderItemRepo.getOrderItems({});
const stream = (await queryBuilder.stream());
stream
   .on('result', (chunk) => chunk)
   .on('error', (err) => consoleconsole.log('error:' + err))
   .on('end', (end) => consoleconsole.log('end: ' + end));
источник

AK

Andrey Korobeynikov in Node.js — русскоговорящее сообщество
в этих чанках у меня строки
источник