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(...)", то с кибаной все в порядке.

Таким образом, вопрос заключается в том, как я могу использовать полезную нагрузку запроса и сохранить исходную полезную нагрузку без изменений после этого? Благодарю.

0 ответов

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