Menu
CoddyTech

Query-Parameter

Teil des Abschnitts TypeScript und NestJS der Node.js-Journey von Coddy. Lektion 3 von 17.

Ein Client, der nur die offenen Aufgaben möchte, sollte nicht erst alle Aufgaben herunterladen und selbst filtern müssen. Der Abfrageparameter, der Teil nach ?, enthält solche Optionen.

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

@Query('author') liest ?author=Le%20Guin aus oder liefert undefined, wenn die Anfrage keinen solchen Parameter enthält.

TypeScript-Typen werden beim Ausführen des Codes entfernt: Node führt das JavaScript aus, das nach dem Entfernen der Typen übrig bleibt, und niemand überprüft sie. Schreibe inStock?: boolean, und Nest übergibt dir trotzdem die Zeichenfolge 'false', die als wahr ausgewertet wird. Die Typen dokumentieren deinen Code und helfen dem Editor; vergleiche Abfragewerte als Text.

challenge icon

Aufgabe

Einfach
  • GET /tasks?done=true liefert nur die erledigten Aufgaben; GET /tasks?done=false nur die offenen.
  • Ohne done liefert GET /tasks alle Aufgaben.
  • Sende zuerst GET /tasks?done=false, dann GET /tasks?done=true.

Probier es selbst

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 dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in TypeScript und NestJS