قيم الإعداد
جزء من قسم TypeScript وNestJS في رحلة Node.js على Coddy. الدرس 12 من 24.
GET /tasks على وشك إرجاع مهامه صفحةً واحدةً في كل مرة، كما في القسم 3. عدد المهام التي تتسع لها الصفحة هو إعداد، لذا ينبغي أن يأتي من البيئة بدلًا من كتابته في الشيفرة. يسجّل موفّر القيمة أي قيمة تحت اسم يُسمّى رمزًا.
providers: [
{ provide: 'CURRENCY', useValue: process.env.CURRENCY ?? 'EUR' },
],
constructor(@Inject('CURRENCY') private readonly currency: string) {}ليس للسلسلة النصية صنف يمكن لـ Nest قراءته من نوع المُعامل، لذا يحدّد @Inject('CURRENCY') الرمز. يجب أن يُكتب بالطريقة نفسها في الموضعين: فالخطأ المطبعي يوقف التطبيق مع ظهور الخطأ «تعذّر حل التبعيات». قيم البيئة سلاسل نصية دائمًا؛ حوّلها باستخدام Number() عندما تحتاج إلى رقم.
التحدي
سهلتفتح هذه الخطوة مشروع متعقّب المهام في Nest الذي أُعدّ للدورة، بدلًا من ملفات مشروعك من A Second Module (بما في ذلك src/stats/stats.module.ts). يبقى عملك السابق في درسه الخاص. اقرأ الملفات المقدّمة قبل تعديل src/tasks/tasks.module.ts. تتضمن هذه النسخة خدمة Nest ووحدة الإحصاءات، مع توفير كود تقسيم الصفحات.
يضيف متعقّب المهام المُعدّ هذا تقسيم الصفحات إلى GET /tasks. في src/tasks/tasks.module.ts، سجّل موفّر قيمة باسم PAGE_SIZE. اقرأ قيمة البيئة، واجعل القيمة الافتراضية 10 عند غيابها، وحوّلها إلى رقم.
في src/tasks/tasks.controller.ts، أزِل حقل pageSize ذي القيمة الثابتة. استقبل الموفّر في المُنشئ كحقل رقمي خاص للقراءة فقط باسم pageSize. استخدم @Inject مع اسم الرمز المطابق تمامًا؛ فالاستيراد وكود تقسيم الصفحات متوفران.
جرّب ذلك: يضبط Run القيمة PAGE_SIZE=2. يعيد GET /tasks عنصرين، والصفحة 1، والإجمالي 3، وعدد الصفحات 2. يعيد GET /tasks?page=2 المهمة المتبقية. من دون متغير البيئة هذا، يكون العدد الافتراضي عشرة عناصر في الصفحة.
جرّب بنفسك
import { Module } from '@nestjs/common';
import { ClockService } from './clock.service';
import { TasksController } from './tasks.controller';
import { TasksService } from './tasks.service';
@Module({
controllers: [TasksController],
providers: [TasksService, ClockService],
exports: [TasksService],
})
export class TasksModule {}
جميع دروس TypeScript وNestJS
تدرّب بنفسك: Playground لـ Express