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

للبدء في استخدام 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 أو 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 أو أنشِئ حسابًا جديدًا. إذا أنشأت حسابًا جديدًا، اختَر موقع إعداد تقارير Analytics، ثم وافِق على إعدادات مشاركة البيانات وبنود Google Analytics لمشروعك.

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

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

مشروع حالي على السحابة الإلكترونية

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

  1. سجِّل الدخول إلى وحدة تحكّم Firebase باستخدام الحساب الذي يمنحك إمكانية الوصول إلى مشروع Google Cloud الحالي.
  2. انقر على الزر لإنشاء مشروع Firebase جديد.
  3. في أسفل الصفحة، انقر على إضافة Firebase إلى مشروع Google Cloud.
  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 أو أنشِئ حسابًا جديدًا. إذا أنشأت حسابًا جديدًا، اختَر موقع إعداد تقارير Analytics، ثم وافِق على إعدادات مشاركة البيانات وبنود Google Analytics لمشروعك.

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

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

إعداد البيئة وواجهة سطر أوامر Firebase

Node.js

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

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

npm install -g firebase-tools

يؤدي ذلك إلى تثبيت أمر firebase المتاح عالميًا. إذا فشل الأمر، فقد تحتاج إلى تغيير أذونات npm. للتحديث إلى أحدث إصدار من "firebase-tools"، أعِد تشغيل الأمر نفسه.

Python

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

بعد تثبيت Python، ثبِّت واجهة سطر الأوامر (CLI) في Firebase باستخدام الطريقة المفضّلة لديك.

إعداد مشروعك

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

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

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

    • JavaScript
    • TypeScript
    • Python

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

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

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

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 و"مدير 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. توفّر مدير SDK طريقة فعّالة لدمج Firebase باستخدام Cloud Functions، وذلك في أي مكان تتوفّر فيه، مثل FCM وAuthentication وFirebase Realtime Database.

تثبِّت واجهة سطر الأوامر في Firebase تلقائيًا حزمة SDK الخاصة بمدير Firebase وحزمة SDK الخاصة بـ Firebase لوحدات 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})

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

الأقواس، مثل {documentId}، تحيط بـ "المَعلمات"، وهي أحرف بدل تعرض البيانات المطابقة لها في دالة رد الاتصال. يؤدي Cloud Firestore إلى تفعيل عملية الاستدعاء كلما تمت إضافة رسائل جديدة.

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

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

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

لمحاكاة الدوال:

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

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

    1. سيتم استبدال MY_PROJECT برقم تعريف مشروعك.
    2. قد يختلف المنفذ على جهازك المحلي.
  3. أضِف سلسلة طلب البحث ?text=uppercaseme إلى نهاية عنوان 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 عنوان URL لأي نقاط نهاية لدالة HTTP. في الوحدة الطرفية، من المفترض أن يظهر لك سطر مثل ما يلي:

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

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

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

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

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

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

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

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

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

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

لمزيد من المعلومات حول "Cloud Functions"، يمكنك أيضًا اتّباع الخطوات التالية: