Node.js регистрирует несколько запросов с относительными идентификаторами
В двух словах: можно ли связать журналы (по всему API узла) с определенным (динамическим) ссылочным идентификатором?
[Объясняется дальше]
Итак, вот ситуация: я пишу API, который потенциально обрабатывает до сотен запросов одновременно. Это реализовано в Node.js и Express. Я веду обширную регистрацию по всему API, и у каждого журнала должен быть уникальный ссылочный идентификатор, чтобы я мог связать несколько журналов с одним и тем же запросом.
Один из способов сделать это - случайно сгенерировать строку и передать ее в качестве параметра для каждого вызова функции (я сохраняю это в качестве крайней меры). я не хочу это делать
Повторить,
- запрос приходит
- случайным образом сгенерировать строку:
aljsndci.json
- добавить (экспресс) request.body к
aljsndci.json
- делать внутреннюю логику в API
- войти в формате json, каждый журнал должен содержать ключ
{ ... file: 'aljsndci.json' ... }
- войти в формате 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. Проверьте это, и если у вас есть какие-либо сомнения, скажите это здесь или в другом вопросе.