Query-Parameter
Teil des Abschnitts TypeScript und NestJS der Node.js-Journey von Coddy. Lektion 5 von 24.
Ein Client, der nur die offenen Aufgaben abrufen möchte, sollte nicht jede Aufgabe herunterladen und selbst filtern müssen. Der Abfrage-String, 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 entfernt, wenn der Code ausgeführt wird: Node führt das JavaScript aus, das nach dem Entfernen der Typen übrig bleibt, und nichts überprüft sie. Schreib inStock?: boolean, und Nest übergibt dir trotzdem den String 'false', der als wahr gilt. Die Typen dokumentieren deinen Code und helfen dem Editor; vergleiche Abfragewerte als Text.
Aufgabe
EinfachGET /tasks?done=trueliefert nur die erledigten Aufgaben;GET /tasks?done=falsenur die offenen.- Ohne
doneliefertGET /tasksalle Aufgaben. - Sende zuerst
GET /tasks?done=false, dannGET /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));
}
}
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
1Nest-Grundlagen
Klassen und MethodenHallo, NestEinen Controller registrieren4Guards, Filter und Interceptors
GuardsÜbe selbstständig: Express-Playground