[英]Get actual Query() value instead of parsed one
我在 controller 中有一个方法可以检索多条记录以及分页和过滤。
@Get()
findAll(
@Query('skip') skip: string,
@Query('take') take: string,
@Query('sortBy') sortBy: string,
@Query('content') content: string,
@Query('isCorrect') isCorrect?: boolean | null,
) {
console.log(isCorrect, typeof isCorrect); // <-- param isCorrect skipped = false, boolean
const filters: AnswerFilters = { content, isCorrect };
return this.answersService.offsetPaginate(Number(skip), Number(take), sortBy, filters);
}
@Query('isCorrect') isCorrect?: boolean | null
我有问题 @Query('isCorrect') isCorrect?: boolean | null
。 如果我通过 Postman 发送true
或false
,这个值实际上会显示出来并且是正确的。 但是,如果我跳过发送此参数,我会得到false
而不是null
,这是不正确的。 我需要阅读此null
以稍后跳过此字段的过滤。
是否有可能以某种方式阻止此解析为 boolean?
我认为 NestJS 根本不解析查询参数。 它们应该始终是字符串。
这意味着我认为你想要:
@Query('isCorrect') isCorrectParam?: string,
其次是:
let isCorrect = null
if (isCorrectParam === 'true') isCorrect = true
if (isCorrectParam === 'false') isCorrect = false
const filters: AnswerFilters = { content, isCorrect: isCorrect === 'true' };
这将确保在传递?isCorrect=true
时将其转换为 boolean true
,如果传递?isCorrect=false
则得到 boolean false
,如果省略参数或传递任何其他值,则得到null
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.