Menu
CoddyTech

Parâmetros de consulta

Parte da seção TypeScript e NestJS do Journey de Node.js da Coddy. Lição 3 de 17.

Um cliente que queira apenas as tarefas abertas não deveria precisar baixar todas as tarefas e filtrá-las por conta própria. A string de consulta, a parte depois de ?, carrega opções como essa.

@Get()
findAll(@Query('author') author?: string) {
    if (!author) {
        return this.books;
    }
    return this.books.filter((book) => book.author === author);
}

@Query('author') lê ?author=Le%20Guin ou retorna undefined quando a solicitação não contém esse parâmetro.

Os tipos do TypeScript são removidos quando o código é executado: o Node executa o JavaScript restante após a remoção dos tipos, e nada os verifica. Escreva inStock?: boolean e o Nest ainda fornecerá a string 'false', que é avaliada como verdadeira. Os tipos documentam seu código e ajudam o editor; compare os valores da consulta como texto.

challenge icon

Desafio

Fácil
  • GET /tasks?done=true retorna apenas as tarefas concluídas; GET /tasks?done=false retorna apenas as tarefas em aberto.
  • Sem done, GET /tasks retorna todas as tarefas.
  • Envie GET /tasks?done=false e, em seguida, GET /tasks?done=true.

Experimente você mesmo

import { Controller, Get, Param } from '@nestjs/common';

interface Task {
    id: number;
    title: string;
    done: boolean;
}

@Controller('tasks')
export class TasksController {
    private tasks: Task[] = [
        { id: 1, title: 'Write the README', done: true },
        { id: 2, title: 'Fix the login bug', done: false },
        { id: 3, title: 'Plan the sprint', done: false },
    ];

    @Get()
    findAll(): Task[] {
        return this.tasks;
    }

    @Get(':id')
    findOne(@Param('id') id: string): Task | undefined {
        return this.tasks.find((task) => task.id === Number(id));
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de TypeScript e NestJS