Menu
CoddyTech

Parameter Query

Termasuk bagian TypeScript dan NestJS dalam perjalanan Node.js di Coddy. Pelajaran 3 dari 17.

Client yang hanya menginginkan tugas yang masih terbuka seharusnya tidak perlu mengunduh semua tugas lalu memfilternya sendiri. String query, bagian setelah ?, memuat opsi seperti itu.

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

@Query('author') membaca ?author=Le%20Guin, atau memberikan undefined jika permintaan tidak menyertakannya.

Tipe TypeScript dihapus saat kode dijalankan: Node menjalankan JavaScript yang tersisa setelah tipe dihapus, dan tidak ada yang memeriksanya. Tulis inStock?: boolean dan Nest tetap memberikan string 'false', yang bernilai truthy. Tipe mendokumentasikan kodemu dan membantu editor, bandingkan nilai query sebagai teks.

challenge icon

Tantangan

Mudah
  • GET /tasks?done=true menampilkan hanya tugas yang sudah selesai; GET /tasks?done=false hanya menampilkan tugas yang masih terbuka.
  • Tanpa done, GET /tasks menampilkan semua tugas.
  • Kirim GET /tasks?done=false, lalu GET /tasks?done=true.

Coba sendiri

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 iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di TypeScript dan NestJS

Latihan sendiri: Playground Express