fix(server): set reqeust-id on ClsModule setup (#9829)

This commit is contained in:
fengmk2
2025-01-21 10:15:37 +00:00
parent b6a8d644f8
commit 54dd131f4e
4 changed files with 8 additions and 18 deletions

View File

@@ -62,6 +62,8 @@ test('should init app', async t => {
t.is(config.type, 'Affine');
t.true(Array.isArray(config.features));
// make sure the request id is set
t.truthy(response.headers['x-request-id']);
});
test('should return 404 for unknown path', async t => {
@@ -76,4 +78,6 @@ test('should be able to call apis', async t => {
.expect(200);
t.is(res.body.flavor, 'graphql');
// make sure the request id is set
t.truthy(res.headers['x-request-id']);
});

View File

@@ -10,6 +10,7 @@ import { ScheduleModule } from '@nestjs/schedule';
import { ClsPluginTransactional } from '@nestjs-cls/transactional';
import { TransactionalAdapterPrisma } from '@nestjs-cls/transactional-adapter-prisma';
import { PrismaClient } from '@prisma/client';
import { Response } from 'express';
import { get } from 'lodash-es';
import { ClsModule } from 'nestjs-cls';
@@ -57,6 +58,9 @@ export const FunctionalityModules = [
// make every request has a unique id to tracing
return randomUUID();
},
setup(cls, _req, res: Response) {
res.setHeader('X-Request-Id', cls.getId());
},
},
plugins: [
// https://papooch.github.io/nestjs-cls/plugins/available-plugins/transactional/prisma-adapter

View File

@@ -12,7 +12,6 @@ import {
import { SocketIoAdapter } from './base/websocket';
import { AuthGuard } from './core/auth';
import { ENABLED_FEATURES } from './core/config/server-feature';
import { responseRequestIdHeader } from './middleware/request-id';
import { serverTimingAndCache } from './middleware/timing';
export async function createApp() {
@@ -32,7 +31,6 @@ export async function createApp() {
}
app.use(serverTimingAndCache);
app.use(responseRequestIdHeader);
app.use(
graphqlUploadExpress({

View File

@@ -1,16 +0,0 @@
import { NextFunction, Request, Response } from 'express';
import { ClsServiceManager } from 'nestjs-cls';
import onHeaders from 'on-headers';
export const responseRequestIdHeader = (
_req: Request,
res: Response,
next: NextFunction
) => {
onHeaders(res, () => {
const requestId = ClsServiceManager.getClsService().getId();
res.setHeader('X-Request-Id', requestId);
});
next();
};