Menu
CoddyTech

معلمات الاستعلام

جزء من قسم 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'، التي تُعد قيمة صادقة. توثّق الأنواع شيفرتك وتساعد المحرر؛ قارن قيم الاستعلام بوصفها نصوصًا.

challenge icon

التحدي

سهل
  • يعرض 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));
    }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس TypeScript وNestJS

تدرّب بنفسك: Playground لـ Express