Menu
CoddyTech

Parametry zapytania

Część sekcji TypeScript i NestJS ścieżki Node.js w Coddy. Lekcja 5 z 24.

Klient, który chce otrzymać tylko otwarte zadania, nie powinien musieć pobierać wszystkich zadań i filtrować ich samodzielnie. Ciąg zapytania, czyli część po ?, przekazuje takie opcje.

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

@Query('author') odczytuje ?author=Le%20Guin albo zwraca undefined, gdy żądanie nie zawiera tej wartości.

Typy TypeScript są usuwane podczas uruchamiania kodu: Node uruchamia JavaScript pozostały po usunięciu typów i nic ich nie sprawdza. Zapisz inStock?: boolean, a Nest i tak przekaże ci ciąg znaków 'false', który jest wartością prawdziwą. Typy dokumentują kod i pomagają edytorowi; porównuj wartości parametrów zapytania jako tekst.

challenge icon

Wyzwanie

Łatwy
  • GET /tasks?done=true zwraca tylko ukończone zadania; GET /tasks?done=false tylko otwarte.
  • Bez parametru done GET /tasks zwraca wszystkie zadania.
  • Wyślij GET /tasks?done=false, a następnie GET /tasks?done=true.

Spróbuj swoich sił

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 iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji TypeScript i NestJS

Poćwicz samodzielnie: Edytor online Express