[英]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.