如何使用 nestjs 或 express 在自定义数据中获取 res
how to get res in custom data with nestjs or express
中间件回复说验证通过后发送给controller
>> middleware code
async use(req: any, res: any, next: () => void) {
const validate = await this.validate(req.cookies.token);
const permission = validate;
res.permission = permission;
req.permission = permission;
next();
}
>> controller code
root(@Res() res: Response, @Req() req: Request) {
if (res.permission) {
res.redirect("some where");
} else {
return res.render('some views')
}
}
错误信息是
'属性 'permission' 在类型 'Response<any, Record<string,any>>' 上不存在
但是控制器不能用this.How你用吗?
抱歉我英语不好
一个快速解决方法是定义您的自定义类型并扩展 Request
.
像这样
type MyResType = {
permission: boolean;
};
root(@Res() res: Response & MyResType) {
if (res.permission) {
return res.redirect("admin");
}
return res.render('404')
}
它不会抱怨类型但是这不是在 Nestjs 中推荐的做事方式。除非确实有必要,否则不应使用 @Res
、@Res
装饰器。
我建议使用 guards alongside filters instead and here is the helpful explaination。
至少这是正确的做法,测试会更容易。
中间件回复说验证通过后发送给controller
>> middleware code
async use(req: any, res: any, next: () => void) {
const validate = await this.validate(req.cookies.token);
const permission = validate;
res.permission = permission;
req.permission = permission;
next();
}
>> controller code
root(@Res() res: Response, @Req() req: Request) {
if (res.permission) {
res.redirect("some where");
} else {
return res.render('some views')
}
}
错误信息是 '属性 'permission' 在类型 'Response<any, Record<string,any>>' 上不存在 但是控制器不能用this.How你用吗?
抱歉我英语不好
一个快速解决方法是定义您的自定义类型并扩展 Request
.
像这样
type MyResType = {
permission: boolean;
};
root(@Res() res: Response & MyResType) {
if (res.permission) {
return res.redirect("admin");
}
return res.render('404')
}
它不会抱怨类型但是这不是在 Nestjs 中推荐的做事方式。除非确实有必要,否则不应使用 @Res
、@Res
装饰器。
我建议使用 guards alongside filters instead and here is the helpful explaination。
至少这是正确的做法,测试会更容易。