Как определить, закрыты ли потоки [Node.js]

#javascript #node.js #express

#язык JavaScript #node.js #экспресс

Вопрос:

У меня есть приложение node js, действующее в качестве среднего уровня для проекта искусственного интеллекта, над которым я работаю.

Я хочу перенаправить запрос (учитывая логику, чтобы определить, нужно ли перенаправлять запрос, и другие вещи). Это будет вызов api POST (он же без перенаправлений).

Вместо настройки промежуточного программного обеспечения прокси-сервера я вижу, что запрос может быть передан по конвейеру с помощью библиотеки запросов.

Тем не менее, похоже, что запрос post получает ошибку записи, если я скажу закрыть исходный поток запроса POST, он ошибается, говоря, что я не могу писать в закрытый поток. Error: write after end

 req.pipe(request({  url: `${AI_BRAIN_URL}/project/${ai_project_key}`,  method: 'POST',  headers: req.headers,  body: JSON.stringify(req.body) })).pipe(res)  

Итак, я говорю потоку запросов post оставаться открытым и закрыть его в следующем канале .pipe(res, {end:true} .

Я полагаю, что, поскольку труба объединяет потоки, результирующий поток должен быть закрыт.

Правильно ли мое предположение? Как я могу сказать, что все потоки закрываются?

Окончательный код

 async function routeToBrain(req, res, next) {  const { ai_project_key } = req.body  const { user_key } = req.user   // logic to determine routing   return req.pipe(request({  url: `${AI_BRAIN_URL}/project/${ai_project_key}`,  method: 'POST',  headers: req.headers,  body: JSON.stringify(req.body)  }), { end: false }).pipe(res, { end: true }) }