Menu
CoddyTech

Tham số truy vấn

Thuộc phần TypeScript và NestJS trong hành trình Node.js của Coddy. Bài học 5 trên 24.

Ứng dụng phía máy khách chỉ cần các nhiệm vụ đang mở thì không nên phải tải xuống tất cả nhiệm vụ rồi tự lọc. Chuỗi truy vấn, phần nằm sau ?, chứa các tùy chọn như vậy.

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

@Query('author') đọc ?author=Le%20Guin, hoặc trả về undefined khi yêu cầu không có giá trị này.

Các kiểu TypeScript bị loại bỏ khi chạy code: Node chạy JavaScript còn lại sau khi xóa kiểu dữ liệu, và không có gì kiểm tra chúng. Hãy viết inStock?: boolean, Nest vẫn truyền cho bạn chuỗi 'false', một giá trị được xem là đúng. Các kiểu dữ liệu mô tả code của bạn và giúp ích cho trình soạn thảo; hãy so sánh giá trị truy vấn dưới dạng văn bản.

challenge icon

Thử thách

Dễ
  • GET /tasks?done=true chỉ trả về các nhiệm vụ đã hoàn thành; GET /tasks?done=false chỉ trả về các nhiệm vụ chưa hoàn thành.
  • Nếu không có done, GET /tasks sẽ trả về mọi nhiệm vụ.
  • Gửi GET /tasks?done=false, sau đó gửi GET /tasks?done=true.

Tự làm thử

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 iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong TypeScript và NestJS

Tự luyện tập: Playground Express