Node.JS:如何在路由控制器中验证QueryParams?
假设您有这样一个界面:Node.JS:如何在路由控制器中验证QueryParams?,node.js,rest,routing-controllers,Node.js,Rest,Routing Controllers,假设您有这样一个界面: import { Get, QueryParam } from 'routing-controllers'; // ... @Get('/students') async getStudents( @QueryParam('count') count?: number, ): Promise<void> { console.log(count); } IsInt只能用于类属性,例如用于实体模型,而不能用于单个参数值。但据报道。这是可能的: 此
import { Get, QueryParam } from 'routing-controllers';
// ...
@Get('/students')
async getStudents(
@QueryParam('count') count?: number,
): Promise<void> {
console.log(count);
}
IsInt只能用于类属性,例如用于实体模型,而不能用于单个参数值。但据报道。这是可能的:
此技术不仅适用于@Body,也适用于@Param,
@QueryParam、@BodyParam和其他装饰程序
我在文档中遗漏了这一点:通过注入所有QueryParam而不是单个QueryParam,可以将它们作为类模型进行验证:
enum Roles {
Admin = "admin",
User = "user",
Guest = "guest",
}
class GetUsersQuery {
@IsPositive()
limit: number;
@IsAlpha()
city: string;
@IsEnum(Roles)
role: Roles;
@IsBoolean()
isActive: boolean;
}
@Get("/users")
getUsers(@QueryParams() query: GetUsersQuery) {
// here you can access query.role, query.limit
// and others valid query parameters
}
另外,请确保不要使用桶导入来导入枚举,否则打开api生成器将产生一个错误,即枚举未定义且不是和对象;例如,避免这种情况:
import{Roles}from'../..'
我在文档中遗漏了这一点:通过注入所有QueryParam而不是单个QueryParam,可以将它们作为类模型进行验证:
enum Roles {
Admin = "admin",
User = "user",
Guest = "guest",
}
class GetUsersQuery {
@IsPositive()
limit: number;
@IsAlpha()
city: string;
@IsEnum(Roles)
role: Roles;
@IsBoolean()
isActive: boolean;
}
@Get("/users")
getUsers(@QueryParams() query: GetUsersQuery) {
// here you can access query.role, query.limit
// and others valid query parameters
}
另外,请确保不要使用桶导入来导入枚举,否则打开api生成器将产生一个错误,即枚举未定义且不是和对象;例如,避免这种情况:从“....”导入{Roles}
Number.isInteger(count)Number.isInteger(count)