簡體   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