Node.js регистрирует несколько запросов с относительными идентификаторами

В двух словах: можно ли связать журналы (по всему API узла) с определенным (динамическим) ссылочным идентификатором?

[Объясняется дальше]
Итак, вот ситуация: я пишу API, который потенциально обрабатывает до сотен запросов одновременно. Это реализовано в Node.js и Express. Я веду обширную регистрацию по всему API, и у каждого журнала должен быть уникальный ссылочный идентификатор, чтобы я мог связать несколько журналов с одним и тем же запросом.

Один из способов сделать это - случайно сгенерировать строку и передать ее в качестве параметра для каждого вызова функции (я сохраняю это в качестве крайней меры). я не хочу это делать

Повторить,

  • запрос приходит
  • случайным образом сгенерировать строку: aljsndci.json
  • добавить (экспресс) request.body к aljsndci.json
  • делать внутреннюю логику в API
    • войти в формате json, каждый журнал должен содержать ключ { ... file: 'aljsndci.json' ... }
  • добавить (экспресс) ответ на aljsndci.json
  • ответ через экспресс

Я наткнулся на такие решения, как продолжение локального хранилища, однако, как можно сгенерировать уникальную строку (для пространства имен), а затем ссылаться на эту же строку позже? Все примеры здесь жестко кодируют строку для пространства имен. Есть ли пример, похожий на тот, что здесь (найден здесь)

var getNamespace = require('continuation-local-storage').getNamespace;
var session = getNamespace('my session');

var render = require('./lib/render.js')

function finish(response) {
  var user = session.get('user');
  render({user: user}).pipe(response);
}

где вместо var session = getNamespace('my session');, это на самом деле называет имена серии обратных вызовов с этого момента? Что-то вроде var thisNamespace = getNamespace(this);

В принципе, если бы я мог установить global переменная для каждого последующего обратного вызова, которая решит эту проблему

1 ответ

Я думаю, что точно такая же проблема была решена в этом вопросе: Как идентифицировать запрос (по ID) через цепочку промежуточного программного обеспечения в Express. Проверьте это, и если у вас есть какие-либо сомнения, скажите это здесь или в другом вопросе.

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