控制器不会 return 没有 replay.send 与 fastify 平台的结果
controller don't return result without replay.send with fastify platform
我有登录路径,那个return用户:
@Post('login')
async login(@Body() user: LoginRequest, @Res() reply): Promise<User> {
const foundUser = await this.authService.validateUser(user.email, user.password);
reply.setCookie('t', foundUser._id, { path: '/' });
// reply.send(foundUser);
return foundUser;
}
我的问题是它不是 return 什么都没有(卡在等待中...)),除非我这样做 reply.send(foundUser);
我正在使用允许 cors 来源的代理:
async function bootstrap() {
const app = await NestFactory.create<NestFastifyApplication>(AppModule, new FastifyAdapter());
// enable cors for static angular site.
const corsOptions = {
origin: 'http://localhost:4200',
optionsSuccessStatus: 200,
credentials: true,
methods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS'],
};
app.register(require('fastify-cors'), corsOptions);
// enable cookie for auth.
app.register(require('fastify-cookie'));
// validate types and extra
app.useGlobalPipes(new ValidationPipe({ forbidUnknownValues: true }));
await app.listen(3000);
}
Link到源代码。
您必须从控制器功能中删除 @Res() reply
。一旦注入 response
对象,许多嵌套功能就会停止工作,例如拦截器。
@Post('login')
async login(@Body() user: LoginRequest): Promise<User> {
return this.authService.validateUser(user.email, user.password);
}
您可以使用 interceptor 来动态设置 cookie。
我有登录路径,那个return用户:
@Post('login')
async login(@Body() user: LoginRequest, @Res() reply): Promise<User> {
const foundUser = await this.authService.validateUser(user.email, user.password);
reply.setCookie('t', foundUser._id, { path: '/' });
// reply.send(foundUser);
return foundUser;
}
我的问题是它不是 return 什么都没有(卡在等待中...)),除非我这样做 reply.send(foundUser);
我正在使用允许 cors 来源的代理:
async function bootstrap() {
const app = await NestFactory.create<NestFastifyApplication>(AppModule, new FastifyAdapter());
// enable cors for static angular site.
const corsOptions = {
origin: 'http://localhost:4200',
optionsSuccessStatus: 200,
credentials: true,
methods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS'],
};
app.register(require('fastify-cors'), corsOptions);
// enable cookie for auth.
app.register(require('fastify-cookie'));
// validate types and extra
app.useGlobalPipes(new ValidationPipe({ forbidUnknownValues: true }));
await app.listen(3000);
}
Link到源代码。
您必须从控制器功能中删除 @Res() reply
。一旦注入 response
对象,许多嵌套功能就会停止工作,例如拦截器。
@Post('login')
async login(@Body() user: LoginRequest): Promise<User> {
return this.authService.validateUser(user.email, user.password);
}
您可以使用 interceptor 来动态设置 cookie。