معلمات الاستعلام
جزء من قسم TypeScript وNestJS في رحلة Node.js على Coddy. الدرس 5 من 24.
لا ينبغي أن يضطر العميل الذي يريد المهام المفتوحة فقط إلى تنزيل كل المهام وتصفيتها بنفسه. تحمل سلسلة الاستعلام، وهي الجزء الذي يأتي بعد ?، خيارات من هذا النوع.
@Get()
findAll(@Query('author') author?: string) {
if (!author) {
return this.books;
}
return this.books.filter((book) => book.author === author);
}تقرأ @Query('author') القيمة ?author=Le%20Guin، أو تعطي undefined عندما لا يتضمن الطلب قيمة لها.
تُزال أنواع TypeScript عند تشغيل الشيفرة: يشغّل Node شيفرة JavaScript المتبقية بعد إزالة الأنواع، ولا يتحقق منها أي شيء. اكتب inStock?: boolean، وسيظل Nest يمرر إليك السلسلة النصية 'false'، التي تُعد قيمة صادقة. توثّق الأنواع شيفرتك وتساعد المحرر؛ قارن قيم الاستعلام بوصفها نصوصًا.
التحدي
سهل- يعرض
GET /tasks?done=trueالمهام المكتملة فقط؛ ويعرضGET /tasks?done=falseالمهام المفتوحة فقط. - من دون
done، يعرضGET /tasksجميع المهام. - أرسل
GET /tasks?done=false، ثمGET /tasks?done=true.
جرّب بنفسك
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));
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس TypeScript وNestJS
1أساسيات Nest
الفئات والطرقمرحبًا بـ Nestتسجيل وحدة التحكم4الحراس والمرشحات والمعترضات
الحراستدرّب بنفسك: Playground لـ Express