node.js - Как использовать поток JSON и сохранить исходные данные потока без изменений
Я реализую плагин kibana для проверки / авторизации полезной нагрузки запроса. Формат некоторой полезной нагрузки запроса - JSONStream, пример как ниже,
{ "Индекс":["logstash1*"],"ignore_unavailable": правда, "предпочтение": 1523345500966}
{ "Размер":0,"_ источник":{"исключает":[]}}
{ "Индекс":["logstash2*"],"ignore_unavailable": правда, "предпочтение": 1523345500966}
{ "Размер":0,"_ источник":{"исключает":[]}}
Мне нужно сначала извлечь все имена индексов (logstash1* и logstash2 * в приведенном выше примере), затем выполнить некоторую проверку / авторизацию имен индексов, код выглядит примерно так, как показано ниже:
import JSONStream from 'JSONStream';
import eventStream from 'event-stream';
async function checkIndexNames(request) {
const payload = request.payload;
let indexArray = [];
await eventStream.pipeline(
payload,
JSONStream.parse(['index']),
eventStream.mapSync(function(data){
indexArray.push(data);
})
);
// Do some checks on the index names
}
В основном вышеприведенный код работает хорошо, все имена индексов могут быть извлечены правильно. После того, как мой плагин заканчивает проверку полезной нагрузки, kibana/asticsearch должен продолжать обрабатывать полезную нагрузку.
Проблема в том, что kibana/asticsearch не может обработать полезную нагрузку и жалуется, что "требуется тело запроса". Причина в том, что мой плагин уже использовал полезную нагрузку, а полезная нагрузка исходного запроса больше не существует. Если я закомментирую "await eventStream.pipeline(...)", то с кибаной все в порядке.
Таким образом, вопрос заключается в том, как я могу использовать полезную нагрузку запроса и сохранить исходную полезную нагрузку без изменений после этого? Благодарю.