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.
Thử thách
DễGET /tasks?done=truechỉ trả về các nhiệm vụ đã hoàn thành;GET /tasks?done=falsechỉ trả về các nhiệm vụ chưa hoàn thành.- Nếu không có
done,GET /taskssẽ trả về mọi nhiệm vụ. - Gửi
GET /tasks?done=false, sau đó gửiGET /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));
}
}
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
1Nest cơ bản
Lớp và phương thứcXin chào, NestĐăng ký controller4Bộ bảo vệ, bộ lọc và bộ đánh chặn
Bộ bảo vệTự luyện tập: Playground Express