logologo
התחלה
מדריך
פיתוח
תוסף
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
התחלה
מדריך
פיתוח
תוסף
API
logologo

התחלה מהירה

סקירת פיתוח Plugin
כתיבת Plugin ראשון
מבנה תיקיות הפרויקט

פיתוח Server-side

סקירה כללית
Plugin
Collections טבלאות נתונים
Database: פעולות
DataSourceManager - ניהול מקורות נתונים
ResourceManager
ACL בקרת הרשאות
Middleware
Cache
Event
Context - הקשר בקשה
Migration סקריפט שדרוג
Logger יומן
Telemetry
I18n בינאום
Command
CronJobManager ניהול משימות מתוזמנות
Test

פיתוח Client-side

סקירה כללית
Plugin
Context
Router ניתוב
ACL בקרת הרשאות
DataSourceManager - ניהול מקורות נתונים
Resource
Request
Styles & Themes
Logger יומן
I18n בינאום
Test

אחר

מדריך שדרוג Plugin
רשימת שפות
ניהול תלויות
בנייה
Previous PageEvent
Next PageMigration סקריפט שדרוג
TIP

מסמך זה תורגם על ידי בינה מלאכותית. לכל אי דיוק, אנא עיין בגרסה האנגלית

#Context

ב-NocoBase, כל בקשה יוצרת אובייקט ctx, שהוא מופע (instance) של Context. ה-Context עוטף את המידע של הבקשה והתגובה, ובמקביל מספק פונקציונליות ייחודית ל-NocoBase, כמו גישה למסד נתונים, פעולות מטמון, ניהול הרשאות, בינאום (internationalization) ורישום לוגים.

ה-Application של NocoBase מבוסס על Koa, ולכן ctx הוא למעשה Koa Context. עם זאת, NocoBase הרחיבה אותו עם ממשקי API עשירים, המאפשרים למפתחים לטפל בנוחות בלוגיקה עסקית ב-Middleware וב-Action-ים. לכל בקשה יש ctx עצמאי, מה שמבטיח בידוד נתונים ואבטחה בין בקשות.

#ctx.action

ctx.action מספק גישה ל-Action המבוצע עבור הבקשה הנוכחית. הוא כולל:

  • ctx.action.params
  • ctx.action.actionName
  • ctx.action.resourceName
resourceManager.use(async (ctx) => {
  console.log(ctx.action.actionName); // מציג את שם ה-Action הנוכחי
  ctx.body = `Action: ${ctx.action.actionName}`;
});

#ctx.i18n & ctx.t()

תמיכה בבינאום (i18n).

  • ctx.i18n מספק מידע על הגדרות השפה (locale)
  • ctx.t() משמש לתרגום מחרוזות בהתאם לשפה
resourceManager.use(async (ctx) => {
  const msg = ctx.t('Hello World'); // מחזיר תרגום בהתאם לשפת הבקשה
  ctx.body = msg;
});

#ctx.db

ctx.db מספק ממשק לגישה למסד הנתונים, ומאפשר לכם לפעול ישירות על מודלים ולבצע שאילתות.

resourceManager.use(async (ctx) => {
  const users = await ctx.db.getRepository('users').find();
  ctx.body = users;
});

#ctx.cache

ctx.cache מספק פעולות מטמון (cache), תומך בקריאה וכתיבה למטמון, ומשמש לעיתים קרובות להאצת גישה לנתונים או לשמירת מצב זמני.

resourceManager.use(async (ctx) => {
  await ctx.cache.set('key', 'value', 60); // שמירה במטמון ל-60 שניות
  const val = await ctx.cache.get('key');
  ctx.body = val;
});

#ctx.app

ctx.app הוא מופע היישום של NocoBase, ומאפשר גישה לתצורה גלובלית, תוספים ושירותים.

resourceManager.use(async (ctx) => {
  console.log(ctx.app);
  ctx.body = 'Check console for app';
});

#ctx.auth.user

ctx.auth.user מאחזר את פרטי המשתמש המאומת הנוכחי, ומתאים לשימוש בבדיקות הרשאות או בלוגיקה עסקית.

resourceManager.use(async (ctx) => {
  if (!ctx.auth.user) {
    ctx.throw(401, 'Unauthorized');
  }
  ctx.body = `Hello ${ctx.auth.user.username}`;
});

#ctx.state.currentRoles

ctx.state משמש לשיתוף נתונים בשרשרת ה-middleware.

resourceManager.use(async (ctx) => {
  ctx.body = `Current User: ${ctx.state.currentRoles.join(',')}`;
});

#ctx.logger

ctx.logger מספק יכולות רישום לוגים, ותומך בפלט לוגים מרובה רמות.

resourceManager.use(async (ctx) => {
  ctx.logger.info('Processing request for:', ctx.path);
  ctx.body = 'Logged successfully';
});

#ctx.permission & ctx.can()

ctx.permission משמש לניהול הרשאות, ו-ctx.can() משמש לבדיקה אם למשתמש הנוכחי יש הרשאה לבצע פעולה מסוימת.

resourceManager.use(async (ctx) => {
  const canEdit = await ctx.can('edit', 'posts');
  if (!canEdit) {
    ctx.throw(403, 'Forbidden');
  }
  ctx.body = 'You have permission to edit posts';
});

#סיכום

  • כל בקשה מתאימה לאובייקט ctx עצמאי.
  • ctx הוא הרחבה של Koa Context, המשלבת פונקציונליות של NocoBase.
  • מאפיינים נפוצים כוללים: ctx.db, ctx.cache, ctx.auth, ctx.state, ctx.logger, ctx.can(), ctx.t() ועוד.
  • שימוש ב-ctx ב-Middleware וב-Action-ים מאפשר לטפל בנוחות בבקשות, תגובות, הרשאות, לוגים ומסד נתונים.