key وحقل value يمنحك مخزن مفاتيح-قيم دائم، محدود النطاق في مساحة العمل، ويمكن الاستعلام عنه من خلال نفس عميل واجهة برمجة التطبيقات المُنمَّط الذي تستخدمه بالفعل للسجلات.
عرّف كائن المخزن
عرِّف كائنًا مخصصًا بحقلين —key (حقل TEXT فريد) و value (حقل RAW_JSON حتى تتمكن من تخزين أي حمولة قابلة للتسلسل إلى JSON). راجع Objects للحصول على مرجع defineObject الكامل.
src/objects/kv-store.object.ts
فرض تفرد المفتاح
أضف فهرسًا فريدًا علىkey حتى لا يمكن أبدًا أن يكون لنفس المفتاح صفّان. هذه هي البنية الأولية الموصى بها لفرض التفرد — راجع Data → Unique indexes.
src/indexes/kv-store-key.index.ts
القراءة والكتابة من دالة منطقية
قم بتغليف الكائن بعدد قليل من الأدوات المساعدة الصغيرة بحيث يَظهر باقي الشفرة وكأنه واجهة برمجة تطبيقات لمخزن مفاتيح-قيم —get و set و del. تستخدم هذه الأدوات CoreApiClient، الذي يتم توليده من مخطط مساحة العمل الخاصة بك ويكون مُنمَّطًا بالكامل مقابل كائن kvStore.
src/logic-functions/handlers/kv-store.ts
يحمي الفهرس الفريد من التكرارات، لكن عمليتي تشغيل تكتبان نفس المفتاح الجديد في اللحظة نفسها يمكن أن تتسابقا بين عملية البحث والإنشاء. اعتبر أن عملية الإنشاء التي تفشل بسبب قيد التفرد تعني “أن طرفًا آخر سبقك” — التقط هذا الخطأ وأعد القراءة، أو أعد المحاولة كعملية تحديث.
استخدمه: خزّن استدعاء مكلفًا في الذاكرة المؤقتة
استخدام شائع هو التخزين المؤقت لاستجابة جهة خارجية بطيئة أو مقيدة بمعدل معيّن حتى تعيد عمليات التشغيل المتكررة استخدامها بدلًا من دفع التكلفة في كل مرة.src/logic-functions/getExchangeRate.logic-function.ts
أنماط ونصائح
- مساحات الأسماء. أضف بادئة إلى المفاتيح للحفاظ على فصل الاهتمامات المختلفة ولتسهيل عمليات البحث المجمّعة —
sync-cursor:linearوcache:exchange-rate:USD:EURوlock:nightly-report. رشِّح باستخدامkey: { like: 'cache:%' }لسرد أو مسح مساحة اسم كاملة. - انتهاء الصلاحية (TTL). لا يحتوي المخزن على آلية انتهاء صلاحية مدمجة. قم بتخزين طابع زمني داخل
value(كما في مثال التخزين المؤقت) وتحقق منه عند القراءة، أو أضف حقلDATE_TIMEوقم دوريًا بمسح الصفوف القديمة من دالة يتم تشغيلها بواسطة cron. - ما الذي يتم تخزينه. يمكن لـ
RAW_JSONأن يحتوي على أي قيمة قابلة للتسلسل إلى JSON — أرقام، سلاسل نصية، مصفوفات، كائنات. حافظ على صِغر الإدخالات؛ فهذا مخصّص للتنسيق والتخزين المؤقت، وليس للملفات الكبيرة أو الكتل الثنائية الضخمة. بالنسبة للملفات، استخدم حقلFILESودالةuploadFile. - الرؤية والصلاحيات. تعيش الصفوف في قاعدة بيانات مساحة العمل مثل أي سجل آخر، لذا يمكن الاستعلام عنها عبر واجهة برمجة التطبيقات وتلتزم بدور التطبيق لديك. لإبقاء المخزن خارج واجهة المستخدم الرئيسية، اتركه خارج قائمة التنقل.
- تحديد النطاق على سجل معيّن. هل تحتاج إلى حالة لكل سجل بدلًا من مفاتيح عالمية؟ أضف علاقة من كائن المخزن إلى الكائن المستهدف بدلًا من ترميز المعرّف داخل المفتاح.
هذا عُرف وليس ميزة منفصلة — “مخزن المفاتيح-القيم (KV Store)” هو مجرد كائن مخصص عادي تقوم بتعريفه والاستعلام عنه باستخدام واجهة برمجة التطبيقات القياسية. هذا يعني أنه يستفيد من نفس آليات المزامنة والصلاحيات والأدوات مثل باقي بيانات تطبيقك.