البدء: كتابة الدوال الأولى واختبارها ونشرها

للبدء في استخدام Cloud Functions، ننصحكم بتجربة هذا البرنامج التعليمي، الذي يبدأ بمهام الإعداد المطلوبة ويشرح كيفية إنشاء دالتَين مرتبطتَين واختبارهما، ونشرهما:

  • دالة "إضافة رسالة" تعرض عنوان URL يقبل قيمة نصية ويكتبها في Cloud Firestore.
  • دالة "تغيير النص ليصبح بالأحرف الكبيرة" يتم تشغيلها عند الكتابة في Cloud Firestore وتحوِّل النص إلى أحرف كبيرة

في ما يلي نموذج الرمز البرمجي الكامل الذي يحتوي على الدوال:

Node.js

// The Cloud Functions for Firebase SDK to create Cloud Functions and triggers.
const {logger} = require("firebase-functions");
const {onRequest} = require("firebase-functions/https");
const {onDocumentCreated} = require("firebase-functions/firestore");

// The Firebase Admin SDK to access Firestore.
const {initializeApp} = require("firebase-admin/app");
const {getFirestore} = require("firebase-admin/firestore");

initializeApp();

// Take the text parameter passed to this HTTP endpoint and insert it into
// Firestore under the path /messages/:documentId/original
exports.addmessage = onRequest(async (req, res) => {
  // Grab the text parameter.
  const original = req.query.text;
  // Push the new message into Firestore using the Firebase Admin SDK.
  const writeResult = await getFirestore()
      .collection("messages")
      .add({original: original});
  // Send back a message that we've successfully written the message
  res.json({result: `Message with ID: ${writeResult.id} added.`});
});

// Listens for new messages added to /messages/:documentId/original
// and saves an uppercased version of the message
// to /messages/:documentId/uppercase
exports.makeuppercase = onDocumentCreated("/messages/{documentId}", (event) => {
  // Grab the current value of what was written to Firestore.
  const original = event.data.data().original;

  // Access the parameter `{documentId}` with `event.params`
  logger.log("Uppercasing", event.params.documentId, original);

  const uppercase = original.toUpperCase();

  // You must return a Promise when performing
  // asynchronous tasks inside a function
  // such as writing to Firestore.
  // Setting an 'uppercase' field in Firestore document returns a Promise.
  return event.data.ref.set({uppercase}, {merge: true});
});

Python

# The Cloud Functions for Firebase SDK to create Cloud Functions and set up triggers.
from firebase_functions import firestore_fn, https_fn

# The Firebase Admin SDK to access Cloud Firestore.
from firebase_admin import initialize_app, firestore
import google.cloud.firestore

app = initialize_app()


@https_fn.on_request()
def addmessage(req: https_fn.Request) -> https_fn.Response:
    """Take the text parameter passed to this HTTP endpoint and insert it into
    a new document in the messages collection."""
    # Grab the text parameter.
    original = req.args.get("text")
    if original is None:
        return https_fn.Response("No text parameter provided", status=400)

    firestore_client: google.cloud.firestore.Client = firestore.client()

    # Push the new message into Cloud Firestore using the Firebase Admin SDK.
    _, doc_ref = firestore_client.collection("messages").add({"original": original})

    # Send back a message that we've successfully written the message
    return https_fn.Response(f"Message with ID {doc_ref.id} added.")


@firestore_fn.on_document_created(document="messages/{pushId}")
def makeuppercase(event: firestore_fn.Event[firestore_fn.DocumentSnapshot | None]) -> None:
    """Listens for new documents to be added to /messages. If the document has
    an "original" field, creates an "uppercase" field containg the contents of
    "original" in upper case."""

    # Get the value of "original" if it exists.
    if event.data is None:
        return
    try:
        original = event.data.get("original")
    except KeyError:
        # No "original" field, so do nothing.
        return

    # Set the "uppercase" field.
    print(f"Uppercasing {event.params['pushId']}: {original}")
    upper = original.upper()
    event.data.reference.update({"uppercase": upper})

لمحة عن هذا البرنامج التعليمي

اخترنا Cloud Firestore والدوال التي يتم تشغيلها من خلال طلبات HTTP لهذا النموذج، ويرجع ذلك جزئيًا إلى إمكانية اختبار عوامل التشغيل في الخلفية هذه بدقة من خلال Firebase Local Emulator Suite. تتوافق مجموعة الأدوات هذه أيضًا مع Realtime Database وCloud Storage وPubSub والمصادقة وعوامل التشغيل القابلة للاستدعاء من خلال HTTP. يمكن اختبار أنواع أخرى من عوامل التشغيل في الخلفية مثل Remote Config وعوامل تشغيل TestLab بشكل تفاعلي باستخدام مجموعات أدوات غير موضّحة في هذه الصفحة.

توضّح الأقسام التالية من هذا البرنامج التعليمي الخطوات المطلوبة لإنشاء النموذج واختباره ونشره.

إنشاء مشروع على Firebase

مستخدم جديد على Firebase أو Google Cloud

اتّبِعوا هذه الخطوات إذا كنتم مستخدمين جددًا على Firebase أو Google Cloud.
يمكنكم أيضًا اتّباع هذه الخطوات إذا أردتم إنشاء مشروع Firebase جديد بالكامل (ومشروع Google Cloud الأساسي).

  1. سجِّلوا الدخول إلى Firebase وحدة التحكّم.
  2. انقروا على الزر لإنشاء مشروع Firebase جديد.
  3. في حقل النص، أدخِلوا اسم مشروع.

    إذا كنتم جزءًا من مؤسسة Google Cloud، يمكنكم اختياريًا تحديد المجلد الذي تريدون إنشاء مشروعكم فيه.

  4. إذا طُلب منكم ذلك، راجِعوا بنود Firebase واقبلوا بها، ثم انقروا على متابعة.
  5. (اختياري) فعِّلوا المساعدة المستندة إلى الذكاء الاصطناعي في Firebase وحدة التحكّم (المسمّاة "Gemini في Firebase")، ما يمكن أن يساعدكم في البدء و تبسيط عملية التطوير.
  6. (اختياري) أعدّوا Google Analytics لمشروعكم، ما يتيح تجربة مثالية باستخدام منتجات Firebase التالية: Firebase A/B Testing وCloud Messaging وCrashlytics وIn-App Messaging وRemote Config (بما في ذلك ميزة "التخصيص").

    يمكنكم إما اختيار حساب حالي Google Analytics account أو إنشاء حساب جديد. إذا أنشأتم حسابًا جديدًا، اختاروا موقع إعداد تقارير Analytics، ثم اقبلوا إعدادات مشاركة البيانات وبنود Google Analytics لمشروعكم.

  7. انقروا على إنشاء مشروع.

تنشئ Firebase مشروعكم وتوفّر بعض الموارد الأولية وتفعِّل واجهات برمجة التطبيقات المهمة. عند اكتمال العملية، سيتم نقلكم إلى صفحة النظرة العامة لمشروع Firebase الخاص بكم في Firebase console.

مشروع حالي على Google Cloud

اتّبِعوا هذه الخطوات إذا أردتم البدء في استخدام Firebase مع مشروع حالي Google Cloud مزيد من المعلومات حول "إضافة Firebase" إلى مشروع حالي Google Cloud وحلّ المشاكل المتعلقة بذلك.

  1. سجِّلوا الدخول إلى Firebase وحدة التحكّم باستخدام الحساب الذي يمنحكم إمكانية الوصول إلى المشروع الحالي Google Cloud.
  2. انقروا على الزر لإنشاء مشروع Firebase جديد.
  3. في أسفل الصفحة، انقروا على إضافة Firebase إلى مشروع على السحابة الإلكترونية من Google.
  4. في حقل النص، ابدأوا بإدخال اسم مشروع المشروع الحالي، ثم اختاروا المشروع من القائمة المعروضة.
  5. انقروا على فتح المشروع.
  6. إذا طُلب منكم ذلك، راجِعوا بنود Firebase واقبلوا بها، ثم انقروا على متابعة.
  7. (اختياري) فعِّلوا المساعدة المستندة إلى الذكاء الاصطناعي في Firebase وحدة التحكّم (المسمّاة "Gemini في Firebase")، ما يمكن أن يساعدكم في البدء و تبسيط عملية التطوير.
  8. (اختياري) أعدّوا Google Analytics لمشروعكم، ما يتيح تجربة مثالية باستخدام منتجات Firebase التالية: Firebase A/B Testing وCloud Messaging وCrashlytics وIn-App Messaging وRemote Config (بما في ذلك ميزة "التخصيص").

    يمكنكم إما اختيار حساب حالي Google Analytics account أو إنشاء حساب جديد. إذا أنشأتم حسابًا جديدًا، اختاروا موقع إعداد تقارير Analytics، ثم اقبلوا إعدادات مشاركة البيانات وبنود Google Analytics لمشروعكم.

  9. انقروا على إضافة Firebase.

تضيف Firebase منصة Firebase إلى مشروعكم الحالي. عند اكتمال العملية، سيتم نقلكم إلى صفحة النظرة العامة لمشروع Firebase في Firebase وحدة التحكّم.

إعداد بيئتكم وFirebase CLI

Node.js

ستحتاجون إلى بيئة Node.js لكتابة الدوال، وإلى Firebase CLI لنشر الدوال في وقت تشغيل Cloud Functions. لتثبيت Node.js وnpm، يُنصح باستخدام مدير إصدارات Node.

بعد تثبيت Node.js وnpm، ثبِّتوا Firebase CLI بالطريقة المفضّلة لديكم. لتثبيت CLI من خلال npm، استخدِموا الأمر التالي:

npm install -g firebase-tools

يؤدي هذا إلى تثبيت الأمر `firebase` المتاح على مستوى العالم. إذا تعذّر تنفيذ الأمر، قد تحتاجون إلى تغيير أذونات npm. للترقية إلى أحدث إصدار من firebase-tools، أعيدوا تنفيذ الأمر نفسه.

Python

ستحتاجون إلى بيئة Python لكتابة الدوال، وإلى Firebase CLI لنشر الدوال في وقت تشغيل Cloud Functions. ننصحكم باستخدام venv لعزل التبعيات. تتوفّر إصدارات Python من 3.10 إلى 3.13، ويكون الإصدار 3.13 هو وقت التشغيل التلقائي.

بعد تثبيت Python، ثبِّتوا Firebase CLI بالطريقة المفضّلة لديكم.

إعداد مشروعك

عند إعداد Firebase SDK لـ Cloud Functions، تنشئون مشروعًا فارغًا يحتوي على التبعيات وبعض نماذج الرموز البرمجية البسيطة. إذا كنتم تستخدمون Node.js، يمكنكم اختيار TypeScript أو JavaScript لإنشاء الدوال. لأغراض هذا البرنامج التعليمي، ستحتاجون أيضًا إلى إعداد Cloud Firestore.

لإعداد مشروعكم، اتّبِعوا الخطوات التالية:

  1. نفِّذوا الأمر firebase login لتسجيل الدخول من خلال المتصفّح ومصادقة Firebase CLI.
  2. انتقِلوا إلى دليل مشروعكم على Firebase.
  3. نفِّذوا الأمر firebase init firestore. في هذا البرنامج التعليمي، يمكنكم قبول القيم التلقائية عندما يُطلب منكم إدخال قواعد Firestore وملفات الفهرس. إذا لم يسبق لكم استخدام Cloud Firestore في هذا المشروع، ستحتاجون أيضًا إلى اختيار وضع بدء وموقع جغرافي لـ Firestore كما هو موضّح في مقالة البدء في استخدام Cloud Firestore.
  4. نفِّذوا الأمر firebase init functions. يطلب منكم CLI اختيار قاعدة رموز حالية أو إعداد قاعدة رموز جديدة وتسميتها. عندما تبدأون، تكون قاعدة رموز واحدة في الموقع التلقائي كافية؛ وفي وقت لاحق، مع توسيع عملية التنفيذ، قد تحتاجون إلى تنظيم الدوال في قواعد رموز.
  5. يمنحكم CLI الخيارات التالية لدعم اللغة:

    • JavaScript
    • TypeScript
    • Python

    في هذا البرنامج التعليمي، اختاروا JavaScript أو Python. لإنشاء الدوال بلغة TypeScript، يُرجى الاطّلاع على مقالة كتابة الدوال باستخدام TypeScript.

  6. يمنحكم CLI خيار تثبيت التبعيات. يمكنكم رفض هذا الخيار إذا أردتم إدارة التبعيات بطريقة أخرى.

بعد اكتمال هذه الأوامر بنجاح، سيبدو هيكل مشروعكم على النحو التالي:

Node.js

myproject
+- .firebaserc    # Hidden file that helps you quickly switch between
|                 # projects with `firebase use`
|
+- firebase.json  # Describes properties for your project
|
+- functions/     # Directory containing all your functions code
      |
      +- .eslintrc.json  # Optional file containing rules for JavaScript linting.
      |
      +- package.json  # npm package file describing your Cloud Functions code
      |
      +- index.js      # Main source file for your Cloud Functions code
      |
      +- node_modules/ # Directory where your dependencies (declared in
                        # package.json) are installed

بالنسبة إلى Node.js، يحتوي الملف package.json الذي تم إنشاؤه أثناء الإعداد على مفتاح مهم: "engines": {"node": "18"}. يحدّد هذا المفتاح إصدار Node.js لكتابة الدوال ونشرها. يمكنكم اختيار إصدارات أخرى متوافقة .

Python

myproject
+- .firebaserc    # Hidden file that helps you quickly switch between
|                 # projects with `firebase use`
|
+- firebase.json  # Describes properties for your project
|
+- functions/     # Directory containing all your functions code
      |
      +- main.py      # Main source file for your Cloud Functions code
      |
      +- requirements.txt  #  List of the project's modules and packages 
      |
      +- venv/ # Directory where your dependencies are installed

استيراد الوحدات المطلوبة وإعداد تطبيق

بعد إكمال مهام الإعداد، يمكنكم فتح دليل ملفات المصدر والبدء في إضافة الرمز البرمجي كما هو موضّح في الأقسام التالية. بالنسبة إلى هذا النموذج، يجب أن يستورد مشروعكم وحدتَي Cloud Functions وAdmin SDK. أضيفوا أسطرًا مثل ما يلي إلى ملف المصدر:

Node.js

// The Cloud Functions for Firebase SDK to create Cloud Functions and triggers.
const {logger} = require("firebase-functions");
const {onRequest} = require("firebase-functions/https");
const {onDocumentCreated} = require("firebase-functions/firestore");

// The Firebase Admin SDK to access Firestore.
const {initializeApp} = require("firebase-admin/app");
const {getFirestore} = require("firebase-admin/firestore");

initializeApp();

Python

# The Cloud Functions for Firebase SDK to create Cloud Functions and set up triggers.
from firebase_functions import firestore_fn, https_fn

# The Firebase Admin SDK to access Cloud Firestore.
from firebase_admin import initialize_app, firestore
import google.cloud.firestore

app = initialize_app()

تحمِّل هذه الأسطر الوحدات المطلوبة و تُعدّ مثيلاً لتطبيق admin يمكن من خلاله إجراء Cloud Firestore تغييرات. حيثما يتوفّر دعم Admin SDK، كما هو الحال في FCM وAuthentication وFirebase Realtime Database، يوفّر طريقة فعّالة لدمج Firebase باستخدام Cloud Functions.

تثبِّت Firebase CLI تلقائيًا وحدتَي Firebase Admin SDK وFirebase SDK لـ Cloud Functions عند إعداد مشروعكم. لمزيد من المعلومات حول إضافة مكتبات تابعة لجهات خارجية إلى مشروعكم، يُرجى الاطّلاع على مقالة إدارة التبعيات.

إضافة دالة "إضافة رسالة"

بالنسبة إلى دالة "إضافة رسالة"، أضيفوا هذه الأسطر إلى ملف المصدر:

Node.js

// Take the text parameter passed to this HTTP endpoint and insert it into
// Firestore under the path /messages/:documentId/original
exports.addmessage = onRequest(async (req, res) => {
  // Grab the text parameter.
  const original = req.query.text;
  // Push the new message into Firestore using the Firebase Admin SDK.
  const writeResult = await getFirestore()
      .collection("messages")
      .add({original: original});
  // Send back a message that we've successfully written the message
  res.json({result: `Message with ID: ${writeResult.id} added.`});
});

Python

@https_fn.on_request()
def addmessage(req: https_fn.Request) -> https_fn.Response:
    """Take the text parameter passed to this HTTP endpoint and insert it into
    a new document in the messages collection."""
    # Grab the text parameter.
    original = req.args.get("text")
    if original is None:
        return https_fn.Response("No text parameter provided", status=400)

    firestore_client: google.cloud.firestore.Client = firestore.client()

    # Push the new message into Cloud Firestore using the Firebase Admin SDK.
    _, doc_ref = firestore_client.collection("messages").add({"original": original})

    # Send back a message that we've successfully written the message
    return https_fn.Response(f"Message with ID {doc_ref.id} added.")

دالة "إضافة رسالة" هي نقطة نهاية HTTP. يؤدي أي طلب إلى نقطة النهاية إلى تمرير كائنَي الطلب والاستجابة إلى معالج الطلب لمنصتكم (onRequest() أو on_request).

تكون دوال HTTP متزامنة (على غرار الدوال القابلة للاستدعاء)، لذا يجب إرسال استجابة بأسرع وقت ممكن وتأجيل العمل باستخدام Cloud Firestore. تمرِّر دالة HTTP "إضافة رسالة" قيمة نصية إلى نقطة نهاية HTTP وتُدرجها في قاعدة البيانات ضمن المسار /messages/:documentId/original.

إضافة دالة "تغيير النص ليصبح بالأحرف الكبيرة"

بالنسبة إلى دالة "تغيير النص ليصبح بالأحرف الكبيرة"، أضيفوا هذه الأسطر إلى ملف المصدر:

Node.js

// Listens for new messages added to /messages/:documentId/original
// and saves an uppercased version of the message
// to /messages/:documentId/uppercase
exports.makeuppercase = onDocumentCreated("/messages/{documentId}", (event) => {
  // Grab the current value of what was written to Firestore.
  const original = event.data.data().original;

  // Access the parameter `{documentId}` with `event.params`
  logger.log("Uppercasing", event.params.documentId, original);

  const uppercase = original.toUpperCase();

  // You must return a Promise when performing
  // asynchronous tasks inside a function
  // such as writing to Firestore.
  // Setting an 'uppercase' field in Firestore document returns a Promise.
  return event.data.ref.set({uppercase}, {merge: true});
});

Python

@firestore_fn.on_document_created(document="messages/{pushId}")
def makeuppercase(event: firestore_fn.Event[firestore_fn.DocumentSnapshot | None]) -> None:
    """Listens for new documents to be added to /messages. If the document has
    an "original" field, creates an "uppercase" field containg the contents of
    "original" in upper case."""

    # Get the value of "original" if it exists.
    if event.data is None:
        return
    try:
        original = event.data.get("original")
    except KeyError:
        # No "original" field, so do nothing.
        return

    # Set the "uppercase" field.
    print(f"Uppercasing {event.params['pushId']}: {original}")
    upper = original.upper()
    event.data.reference.update({"uppercase": upper})

يتم تنفيذ دالة "تغيير النص ليصبح بالأحرف الكبيرة" عند الكتابة في Cloud Firestore، ما يحدّد المستند الذي يجب الاستماع إليه. لتحسين الأداء، يجب أن تكونوا محدّدين قدر الإمكان.

تحيط الأقواس، مثل {documentId}، "المَعلمات"، وهي أحرف بدل تعرض البيانات المطابقة لها في دالة ردّ الاتصال. Cloud Firestore تُشغِّل دالة ردّ الاتصال كلما تمت إضافة رسائل جديدة.

في Node.js، تكون الدوال المستندة إلى الأحداث، مثل أحداث Cloud Firestore، غير متزامنة. يجب أن تعرض دالة ردّ الاتصال null أو كائنًا، أو وعدًا. إذا لم تعرضوا أي شيء، تنتهي مهلة الدالة، ما يشير إلى حدوث خطأ، ويتم إعادة محاولة تنفيذها. يُرجى الاطّلاع على مقالة الدوال المتزامنة وغير المتزامنة والوعود.

محاكاة تنفيذ الدوال

تتيح لكم Firebase Local Emulator Suite إنشاء التطبيقات واختبارها على جهازكم المحلي بدلاً من نشرها في مشروع Firebase. ننصحكم بشدة بإجراء الاختبارات المحلية أثناء التطوير، ويرجع ذلك جزئيًا إلى أنّها تقلّل من المخاطر الناتجة عن أخطاء البرمجة التي قد تؤدي إلى تكبّد تكاليف في بيئة الإنتاج (على سبيل المثال، حلقة لا نهائية).

لمحاكاة الدوال، اتّبِعوا الخطوات التالية:

  1. نفِّذوا الأمر firebase emulators:start وتحقّقوا من الناتج بحثًا عن عنوان URL لـ Emulator Suite UI. يكون عنوان URL تلقائيًا هو localhost:4000، ولكن قد تتم استضافته على منفذ مختلف على جهازكم. أدخِلوا عنوان URL هذا في متصفّحكم لفتح Emulator Suite UI.

  2. تحقّقوا من ناتج الأمر firebase emulators:start بحثًا عن عنوان URL لدالة HTTP. سيبدو عنوان URL مشابهًا لـ http://localhost:5001/MY_PROJECT/us-central1/addMessage، باستثناء ما يلي:

    1. سيتم استبدال MY_PROJECT برقم تعريف مشروعكم.
    2. قد يكون المنفذ مختلفًا على جهازكم المحلي.
  3. أضيفوا سلسلة طلب البحث ?text=uppercaseme إلى نهاية عنوان URL للدالة. يجب أن يبدو عنوان URL على النحو التالي: http://localhost:5001/MY_PROJECT/us-central1/addMessage?text=uppercaseme. يمكنكم اختياريًا تغيير الرسالة "uppercaseme" إلى رسالة مخصّصة.

  4. أنشئوا رسالة جديدة عن طريق فتح عنوان URL في علامة تبويب جديدة في متصفّحكم.

  5. اطّلِعوا على تأثيرات الدوال في Emulator Suite UI:

    1. في علامة التبويب السجلات ، من المفترض أن تظهر لكم سجلات جديدة تشير إلى أنّ دوَال HTTP قد تم تشغيلها بنجاح:

      i functions: Beginning execution of "addMessage"

      i functions: Beginning execution of "makeUppercase"

    2. في علامة التبويب Firestore ، من المفترض أن يظهر لكم مستند يحتوي على رسالتكم الأصلية بالإضافة إلى النسخة التي تم تحويلها إلى أحرف كبيرة (إذا كانت الرسالة الأصلية هي "uppercaseme"، ستظهر لكم "UPPERCASEME").

نشر الدوال في بيئة إنتاج

بعد أن تعمل الدوال على النحو المطلوب في المحاكي، يمكنكم المتابعة إلى نشرها واختبارها وتشغيلها في بيئة الإنتاج. يُرجى العِلم أنّه لنشر الدوال في بيئة الإنتاج، يجب أن يكون مشروعكم ضمن خطة Blaze المَرِنة. يمكنكم الاطّلاع على Cloud Functions الأسعار.

لإكمال البرنامج التعليمي، انشروا الدوال ثم نفِّذوها.

  1. نفِّذوا هذا الأمر لنشر الدوال:

     firebase deploy --only functions
     

    بعد تنفيذ هذا الأمر، يعرض Firebase CLI عنوان URL لأي نقاط نهاية لدوال HTTP. في الجهاز، من المفترض أن يظهر لكم سطر مثل ما يلي:

    Function URL (addMessage): https://us-central1-MY_PROJECT.cloudfunctions.net/addMessage
    

    يحتوي عنوان URL على رقم تعريف مشروعكم بالإضافة إلى منطقة لدالة HTTP. على الرغم من أنّه ليس عليكم القلق بشأن ذلك الآن، يجب أن تحدّد بعض دوال HTTP في بيئة الإنتاج موقعًا جغرافيًا لتقليل وقت استجابة الشبكة.

    إذا ظهرت لكم أخطاء في الوصول، مثل "يتعذّر منح إذن الوصول إلى المشروع"، جرِّبوا التحقّق من أسماء مستعارة للمشروع.

  2. باستخدام عنوان URL الذي يعرضه CLI، أضيفوا مَعلمة طلب بحث نصي، وافتحوها في متصفّح:

    https://us-central1-MY_PROJECT.cloudfunctions.net/addMessage?text=uppercasemetoo
    

    يتم تنفيذ الدالة وإعادة توجيه المتصفّح إلى الـ Firebase وحدة تحكّم في موقع قاعدة البيانات الذي يتم فيه تخزين السلسلة النصية. يؤدي حدث الكتابة هذا إلى تشغيل دالة "تغيير النص ليصبح بالأحرف الكبيرة"، التي تكتب نسخة من السلسلة النصية بالأحرف الكبيرة.

بعد نشر الدوال وتنفيذها، يمكنكم الاطّلاع على السجلات في Google Cloud Console. إذا كنتم بحاجة إلى حذف الدوال في بيئة التطوير أو الإنتاج، استخدِموا Firebase CLI.

في بيئة الإنتاج، قد تحتاجون إلى تحسين أداء الدالة والتحكّم في التكاليف من خلال ضبط الحدّ الأدنى والأقصى لعدد المثيلات التي سيتم تشغيلها. يُرجى الاطّلاع على مقالة التحكّم في سلوك التوسيع للحصول على مزيد من المعلومات حول خيارات وقت التشغيل هذه.

الخطوات التالية

في هذا المستند، يمكنكم الاطّلاع على مزيد من المعلومات حول كيفية إدارة الدوال في Cloud Functions وكيفية معالجة جميع أنواع الأحداث التي تتوافق مع Cloud Functions.

لمزيد من المعلومات حول Cloud Functions، يمكنكم أيضًا تنفيذ ما يلي:

  • قراءة مقالة حالات استخدام Cloud Functions
  • تجربة الدرس التطبيقي حول الترميز في Cloud Functions.
  • مراجعة نماذج الرموز البرمجية وتنفيذها على GitHub