เริ่มต้นใช้งาน: เขียน ทดสอบ และทำให้ฟังก์ชันแรกใช้งานได้

หากต้องการเริ่มต้นใช้งาน Cloud Functions ให้ลองทำตามบทแนะนำนี้ ซึ่งจะเริ่มด้วยงานการตั้งค่าที่จำเป็น และดำเนินการสร้าง ทดสอบ และทำให้ฟังก์ชันที่เกี่ยวข้อง 2 รายการใช้งานได้

  • ฟังก์ชัน "add message" ที่แสดง 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, Auth และ HTTP ที่เรียกใช้ได้ด้วย ทริกเกอร์เบื้องหลังประเภทอื่นๆ เช่น ทริกเกอร์ Remote Config และ TestLab สามารถทดสอบแบบอินเทอร์แอกทีฟได้โดยใช้ชุดเครื่องมือที่ไม่ได้อธิบายไว้ในหน้านี้

ส่วนต่อไปนี้ของบทแนะนำนี้จะอธิบายขั้นตอนที่จำเป็นในการสร้าง ทดสอบ และทำให้ตัวอย่างใช้งานได้

สร้างโปรเจ็กต์ Firebase

หากเพิ่งเริ่มใช้ Firebase หรือ Cloud

ทำตามขั้นตอนเหล่านี้หากคุณเพิ่งเริ่มใช้ Firebase หรือ Google Cloud
คุณยังทำตามขั้นตอนเหล่านี้ได้หากต้องการสร้างโปรเจ็กต์ Firebase ใหม่ทั้งหมด (และโปรเจ็กต์ Google Cloud ที่เกี่ยวข้อง)

  1. ลงชื่อเข้าใช้คอนโซล Firebase
  2. คลิกปุ่มเพื่อสร้างโปรเจ็กต์ Firebase ใหม่
  3. ป้อนชื่อโปรเจ็กต์ในช่องข้อความ

    หากคุณเป็นส่วนหนึ่งขององค์กร Google Cloud คุณจะเลือกโฟลเดอร์ที่จะสร้างโปรเจ็กต์ได้ (ไม่บังคับ)

  4. หากได้รับข้อความแจ้ง ให้อ่านและยอมรับข้อกำหนดของ Firebase แล้วคลิกต่อไป
  5. (ไม่บังคับ) เปิดใช้ความช่วยเหลือจาก AI ในคอนโซล 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 จะสร้างโปรเจ็กต์ จัดสรรทรัพยากรเริ่มต้นบางอย่าง และเปิดใช้ API ที่สำคัญ เมื่อกระบวนการเสร็จสมบูรณ์ ระบบจะนำคุณไปยังหน้าภาพรวมของโปรเจ็กต์ Firebase ในคอนโซล Firebase

โปรเจ็กต์ที่อยู่ในระบบคลาวด์ที่มีอยู่

ทำตามขั้นตอนต่อไปนี้หากต้องการเริ่มใช้ Firebase กับโปรเจ็กต์ Google Cloud ที่มีอยู่ ดูข้อมูลเพิ่มเติมและแก้ปัญหาเกี่ยวกับ"การเพิ่ม Firebase" ลงในโปรเจ็กต์ Google Cloud ที่มีอยู่

  1. ลงชื่อเข้าใช้คอนโซล Firebase ด้วยบัญชีที่ให้สิทธิ์คุณเข้าถึงโปรเจ็กต์ Google Cloud ที่มีอยู่
  2. คลิกปุ่มเพื่อสร้างโปรเจ็กต์ Firebase ใหม่
  3. คลิกเพิ่ม Firebase ลงในโปรเจ็กต์ Google Cloud ที่ด้านล่างของหน้า
  4. ในช่องข้อความ ให้เริ่มป้อนชื่อโปรเจ็กต์ของโปรเจ็กต์ที่มีอยู่ แล้วเลือกโปรเจ็กต์จากรายการที่แสดง
  5. คลิกเปิดโปรเจ็กต์
  6. หากได้รับข้อความแจ้ง ให้อ่านและยอมรับข้อกำหนดของ Firebase แล้วคลิกต่อไป
  7. (ไม่บังคับ) เปิดใช้ความช่วยเหลือจาก AI ในคอนโซล 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 CLI

Node.js

คุณจะต้องมีสภาพแวดล้อม Node.js เพื่อเขียนฟังก์ชัน และจะต้องมี Firebase CLI เพื่อติดตั้งใช้งานฟังก์ชันในรันไทม์ Cloud Functions เราขอแนะนำให้ใช้ Node Version Manager ในการติดตั้ง Node.js และ npm

เมื่อติดตั้ง Node.js และ npm แล้ว ให้ติดตั้ง Firebase CLI ผ่านวิธีที่ต้องการ หากต้องการติดตั้ง CLI ผ่าน npm ให้ใช้คำสั่งต่อไปนี้

npm install -g firebase-tools

ซึ่งจะติดตั้งคำสั่ง firebase ที่ใช้ได้ทั่วโลก หากคำสั่งไม่สำเร็จ คุณอาจต้องเปลี่ยนสิทธิ์ npm หากต้องการอัปเดต firebase-tools เป็นเวอร์ชันล่าสุด ให้เรียกใช้คำสั่งเดิมอีกครั้ง

Python

คุณจะต้องมีสภาพแวดล้อม Python เพื่อเขียนฟังก์ชัน และคุณจะต้องมี Firebase CLI เพื่อติดตั้งใช้งานฟังก์ชันในรันไทม์ Cloud Functions เราขอแนะนำให้ใช้ venv เพื่อแยกทรัพยากร Dependency รองรับ Python เวอร์ชัน 3.10 ถึง 3.13 โดยมี 3.13 เป็นรันไทม์เริ่มต้น

เมื่อติดตั้ง Python แล้ว ให้ติดตั้ง Firebase CLI ผ่านวิธีที่ต้องการ

เริ่มต้นโปรเจ็กต์

เมื่อเริ่มต้นใช้งาน SDK ของ Firebase สำหรับ Cloud Functions คุณจะสร้างโปรเจ็กต์เปล่าที่มีทรัพยากร Dependency และโค้ดตัวอย่างเล็กน้อย หากใช้ 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 จะให้ตัวเลือกในการติดตั้งทรัพยากร Dependency คุณสามารถปฏิเสธได้อย่างปลอดภัยหากต้องการจัดการทรัพยากร Dependency ด้วยวิธีอื่น

หลังจากคำสั่งเหล่านี้เสร็จสมบูรณ์ โครงสร้างโปรเจ็กต์จะมีลักษณะดังนี้

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

CLI ของ Firebase จะติดตั้ง Firebase Admin SDK และ SDK ของ Firebase สำหรับโมดูล Cloud Functions โดยอัตโนมัติเมื่อคุณเริ่มต้นโปรเจ็กต์ ดูข้อมูลเพิ่มเติมเกี่ยวกับการเพิ่มไลบรารีของบุคคลที่สามลงในโปรเจ็กต์ได้ที่จัดการทรัพยากร Dependency

เพิ่มฟังก์ชัน "เพิ่มข้อความ"

สําหรับฟังก์ชัน "add message" ให้เพิ่มบรรทัดต่อไปนี้ลงในไฟล์ต้นฉบับ

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.")

ฟังก์ชัน "add message" เป็นปลายทาง HTTP คำขอใดๆ ไปยังปลายทางจะส่งผลให้มีการส่งออบเจ็กต์คำขอและการตอบกลับไปยังเครื่องจัดการคำขอสำหรับแพลตฟอร์มของคุณ (onRequest() หรือ on_request)

ฟังก์ชัน HTTP เป็นแบบซิงโครนัส (คล้ายกับฟังก์ชันที่เรียกใช้ได้) ดังนั้นคุณควรส่งการตอบกลับโดยเร็วที่สุดและเลื่อนการทำงานออกไปโดยใช้ Cloud Firestore ฟังก์ชัน HTTP "add message" จะส่งค่าข้อความไปยังปลายทาง HTTP และแทรกลงในฐานข้อมูลภายใต้เส้นทาง /messages/:documentId/original

เพิ่มฟังก์ชัน "ทำให้เป็นตัวพิมพ์ใหญ่"

สําหรับฟังก์ชัน "make uppercase" ให้เพิ่มบรรทัดต่อไปนี้ลงในไฟล์ต้นฉบับ

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} จะล้อมรอบ "พารามิเตอร์" ซึ่งเป็นไวลด์การ์ดที่แสดงข้อมูลที่ตรงกันใน Callback Cloud Firestore จะเรียกใช้ Callback ทุกครั้งที่มีการเพิ่มข้อความใหม่

ใน Node.js ฟังก์ชันที่ขับเคลื่อนด้วยเหตุการณ์ เช่น เหตุการณ์ Cloud Firestore จะเป็นแบบอะซิงโครนัส ฟังก์ชัน Callback ควรแสดงผล null, ออบเจ็กต์ หรือ Promise หากคุณไม่แสดงผลอะไรเลย ฟังก์ชันจะหมดเวลา ซึ่งเป็นการส่งสัญญาณข้อผิดพลาด และจะลองใหม่ ดูการซิงค์ การไม่ซิงค์ และสัญญา

จำลองการดำเนินการของฟังก์ชัน

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 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 ที่ตำแหน่งฐานข้อมูลซึ่งจัดเก็บสตริงข้อความไว้ เหตุการณ์การเขียนนี้จะทริกเกอร์ฟังก์ชัน "make uppercase" ซึ่งจะเขียนสตริงเวอร์ชันตัวพิมพ์ใหญ่

หลังจากติดตั้งใช้งานและเรียกใช้ฟังก์ชันแล้ว คุณจะดูบันทึกได้ในคอนโซล Google Cloud หากต้องการลบฟังก์ชันในการพัฒนาหรือเวอร์ชันที่ใช้งานจริง ให้ใช้ Firebase CLI

ในเวอร์ชันที่ใช้งานจริง คุณอาจต้องการเพิ่มประสิทธิภาพของฟังก์ชันและควบคุมค่าใช้จ่ายโดยการกำหนดจำนวนอินสแตนซ์ขั้นต่ำและสูงสุดที่จะเรียกใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกเวลาในการเรียกใช้เหล่านี้ได้ที่ควบคุมลักษณะการทำงานของการปรับขนาด

ขั้นตอนถัดไป

ในเอกสารประกอบนี้ คุณสามารถดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีจัดการฟังก์ชันสำหรับ Cloud Functions รวมถึงวิธีจัดการเหตุการณ์ทุกประเภทที่ Cloud Functions รองรับ

หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับ Cloud Functions คุณยังสามารถทำสิ่งต่อไปนี้ได้ด้วย