繁体   English   中英

获取实际的 Query() 值而不是解析值

[英]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 发送truefalse ,这个值实际上会显示出来并且是正确的。 但是,如果我跳过发送此参数,我会得到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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM