Создать случайный запрос для одновременных запросов в NodeJS - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь сгенерировать случайный requestId для моего express сервера. Я использую uuidV1 () из модуля node-uuid. Это нормально работает для обычных запросов, но когда я пытаюсь загрузить его, используя параллельные запросы. сгенерированное значение одинаково.

const uuidv1 = require("uuid/v1");    
const reqId  = uuidv1() 

Ответы [ 3 ]

1 голос
/ 07 января 2020

Вы должны сгенерировать его в промежуточном программном обеспечении и прикрепить его к объекту запроса. Во-вторых, uuidv1 генерирует идентификаторы на основе временных меток (проверьте wiki uuid ), используйте вместо этого v4. Ниже приведен пример express.

const express = require('express');
const app = express();
const uuidv4 = require("uuid/v4");    

app.use((req, res, next) => {
    req.reqId = uuidv4();
    next();
});

app.get('/', function (req, res) {  
  res.send(`Hello World! with reqId: ${req.reqId}`);
});

app.listen(3000, function () {
  console.log('Example app listening on port 3000!')
});
0 голосов
/ 07 января 2020

Модуль 'express -request-id' npm должен сделать всю работу за вас. https://www.npmjs.com/package/express-request-id

const express = require('express');
const app = express();
const addRequestId = require('express-request-id')();  

app.use(addRequestId);

app.get('/', function (req, res) {  
  res.send(`Request Id : ${req.id}`);
});

app.listen(3000, function () {
  console.log('listening on port 3000')
});
0 голосов
/ 07 января 2020

Вместо модуля uuid. Вы можете использовать ниже модуль https://www.npmjs.com/package/uniqid

С этим вы можете генерировать уникальный идентификатор на основе комбинации адреса ma c, идентификатора процесса и отметки времени

...