หากต้องการเริ่มต้นใช้งาน Cloud Functions ให้ลองทำตามบทแนะนำนี้ ซึ่งจะเริ่มด้วยงานการตั้งค่าที่จำเป็น และดำเนินการผ่านการสร้าง การทดสอบ และการทำให้ใช้งานได้ของฟังก์ชัน 2 รายการที่เกี่ยวข้อง
- ฟังก์ชัน "เพิ่มข้อความ" ที่แสดง 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
- ลงชื่อเข้าใช้ Firebaseคอนโซล
- คลิกปุ่มเพื่อสร้างโปรเจ็กต์ Firebase ใหม่
-
ป้อนชื่อโปรเจ็กต์ ในช่องข้อความ
หากเป็นส่วนหนึ่งขององค์สร้าง Google Cloud คุณสามารถเลือกโฟลเดอร์ที่จะสร้างโปรเจ็กต์ได้
- อ่านและยอมรับข้อกำหนดของ Firebase แล้วคลิกต่อไป หากระบบแจ้ง
- (ไม่บังคับ) เปิดใช้ความช่วยเหลือจาก AI ในคอนโซลFirebase (เรียกว่า "Gemini ใน Firebase") ซึ่งจะช่วยคุณเริ่มต้นใช้งานและ ปรับปรุงกระบวนการพัฒนาให้มีประสิทธิภาพมากขึ้น
-
(ไม่บังคับ) ตั้งค่า Google Analytics สำหรับโปรเจ็กต์ ซึ่งจะช่วยให้ได้รับประสบการณ์การใช้งานที่เหมาะสมที่สุดเมื่อใช้ผลิตภัณฑ์ Firebase ต่อไปนี้ Firebase A/B Testing, Cloud Messaging, Crashlytics, In-App Messaging และ Remote Config (รวมถึง การปรับเปลี่ยนในแบบของคุณ)
เลือกบัญชี Google Analytics ที่มีอยู่ หรือสร้างบัญชีใหม่ หากสร้างบัญชีใหม่ ให้เลือกสถานที่ตั้งการรายงาน Analytics, แล้วยอมรับการตั้งค่าการแชร์ข้อมูลและ Google Analytics สำหรับโปรเจ็กต์
- คลิกสร้างโปรเจ็กต์
Firebase จะสร้างโปรเจ็กต์ จัดเตรียมทรัพยากรเริ่มต้นบางอย่าง และ เปิดใช้ API ที่สำคัญ เมื่อกระบวนการเสร็จสมบูรณ์ ระบบจะนำคุณไปยัง หน้าภาพรวมของโปรเจ็กต์ Firebase ในคอนโซล Firebase
โปรเจ็กต์ที่อยู่ในระบบคลาวด์ที่มีอยู่
ทำตามขั้นตอนต่อไปนี้หากต้องการเริ่มใช้ Firebase กับโปรเจ็กต์ที่มีอยู่ Google Cloud ดูข้อมูลเพิ่มเติมและวิธีแก้ปัญหาเกี่ยวกับ "การเพิ่ม Firebase" ลงในโปรเจ็กต์Google Cloud ที่มีอยู่
- ลงชื่อเข้าใช้ Firebase คอนโซล ด้วยบัญชีที่ให้ สิทธิ์เข้าถึงโปรเจ็กต์ที่มีอยู่ Google Cloud
- คลิกปุ่มเพื่อสร้างโปรเจ็กต์ Firebase ใหม่
- คลิก เพิ่ม Firebase ลงในโปรเจ็กต์ Google Cloud ที่ด้านล่างของหน้า
- ในช่องข้อความ ให้เริ่มป้อนชื่อโปรเจ็กต์ ของ โปรเจ็กต์ที่มีอยู่ แล้วเลือกโปรเจ็กต์จากรายการที่แสดง
- คลิกเปิดโปรเจ็กต์
- อ่านและยอมรับข้อกำหนดของ Firebase แล้วคลิกต่อไป หากระบบแจ้ง
- (ไม่บังคับ) เปิดใช้ความช่วยเหลือจาก AI ในคอนโซลFirebase (เรียกว่า "Gemini ใน Firebase") ซึ่งจะช่วยคุณเริ่มต้นใช้งานและ ปรับปรุงกระบวนการพัฒนาให้มีประสิทธิภาพมากขึ้น
-
(ไม่บังคับ) ตั้งค่า Google Analytics สำหรับโปรเจ็กต์ ซึ่งจะช่วยให้ได้รับประสบการณ์การใช้งานที่เหมาะสมที่สุดเมื่อใช้ผลิตภัณฑ์ Firebase ต่อไปนี้ Firebase A/B Testing, Cloud Messaging, Crashlytics, In-App Messaging และ Remote Config (รวมถึง การปรับเปลี่ยนในแบบของคุณ)
เลือกบัญชี Google Analytics ที่มีอยู่ หรือสร้างบัญชีใหม่ หากสร้างบัญชีใหม่ ให้เลือกสถานที่ตั้งการรายงาน Analytics, แล้วยอมรับการตั้งค่าการแชร์ข้อมูลและ Google Analytics สำหรับโปรเจ็กต์
- คลิกเพิ่ม Firebase
Firebase จะเพิ่ม Firebase ลงในโปรเจ็กต์ที่มีอยู่ เมื่อกระบวนการเสร็จสมบูรณ์ ระบบจะนำคุณไปยังหน้าภาพรวมของโปรเจ็กต์ Firebase ในคอนโซล Firebase
ตั้งค่าสภาพแวดล้อมและ Firebase CLI
Node.js
คุณจะต้องมีสภาพแวดล้อม Node.js เพื่อเขียนฟังก์ชัน และจะต้องมี CLI Firebase เพื่อทำให้ฟังก์ชันใช้งานได้ในรันไทม์ 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 เพื่อแยกการขึ้นต่อกัน ระบบรองรับ Python เวอร์ชัน 3.10 ถึง 3.13
โดย 3.13 เป็นรันไทม์เริ่มต้น
เมื่อติดตั้ง Python แล้ว ให้ติดตั้ง Firebase CLI ผ่านวิธีที่ต้องการ
เริ่มต้นโปรเจ็กต์
เมื่อเริ่มต้น Firebase SDK สำหรับ Cloud Functions คุณจะสร้างโปรเจ็กต์เปล่า ที่มีการขึ้นต่อกันและโค้ดตัวอย่างขั้นต่ำ หากใช้ Node.js คุณสามารถเลือก TypeScript หรือ JavaScript เพื่อเขียนฟังก์ชันได้ สำหรับบทแนะนำนี้ คุณจะต้องเริ่มต้น Cloud Firestore ด้วย
วิธีเริ่มต้นโปรเจ็กต์
- เรียกใช้
firebase loginเพื่อเข้าสู่ระบบผ่านเบราว์เซอร์และตรวจสอบสิทธิ์ Firebase CLI - ไปที่ไดเรกทอรีโปรเจ็กต์ Firebase
- วิ่ง
firebase init firestoreสำหรับบทแนะนำนี้ คุณสามารถยอมรับค่าเริ่มต้นเมื่อระบบแจ้งให้ป้อนกฎ Firestore และไฟล์ดัชนี หากยังไม่ได้ใช้ Cloud Firestoreในโปรเจ็กต์นี้ คุณจะต้อง เลือกโหมดเริ่มต้นและสถานที่ตั้งสำหรับ Firestore ตามที่อธิบายไว้ใน เริ่มต้นใช้งาน Cloud Firestore - วิ่ง
firebase init functionsCLI จะแจ้งให้คุณเลือกฐานของโค้ดที่มีอยู่ หรือเริ่มต้นและตั้งชื่อฐานของโค้ดใหม่ เมื่อเพิ่งเริ่มต้นใช้งาน ฐานของโค้ดเดียวในตำแหน่งเริ่มต้นก็เพียงพอแล้ว แต่เมื่อการติดตั้งใช้งานขยายออกไป คุณอาจ ต้องการ จัดระเบียบฟังก์ชันในฐานของโค้ด CLI มีตัวเลือกการรองรับภาษาต่อไปนี้
- JavaScript
- TypeScript
- Python
สำหรับบทแนะนำนี้ ให้เลือก JavaScript หรือ Python หากต้องการเขียนใน TypeScript โปรดดูหัวข้อเขียนฟังก์ชันด้วย TypeScript
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 เป็นวิธีที่มีประสิทธิภาพในการผสานรวม Firebase โดยใช้ Cloud Functions ในทุกที่ที่รองรับ Admin SDK เช่น สำหรับ FCM, Authentication, และ Firebase Realtime Database
CLI จะติดตั้งโมดูล Firebase Admin SDK และ Firebase SDK สำหรับ Cloud Functions โดยอัตโนมัติเมื่อคุณเริ่มต้นโปรเจ็กต์Firebase ดูข้อมูลเพิ่มเติมเกี่ยวกับการเพิ่มไลบรารีของบุคคลที่สาม ลงในโปรเจ็กต์ได้ที่หัวข้อ จัดการทรัพยากร Dependency
เพิ่มฟังก์ชัน "เพิ่มข้อความ"
สำหรับฟังก์ชัน "เพิ่มข้อความ" ให้เพิ่มบรรทัดต่อไปนี้ลงในไฟล์แหล่งที่มา
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 เหตุการณ์จะเป็น
แบบอะซิงโครนัส ฟังก์ชัน Callback ควรแสดงผล null ออบเจ็กต์
หรือ Promise
หากไม่แสดงผลใดๆ ฟังก์ชันจะหมดเวลา ซึ่งจะส่งสัญญาณข้อผิดพลาดและระบบจะลองอีกครั้ง ดูข้อมูลเพิ่มเติมได้ที่หัวข้อซิงค์, ไม่พร้อมกัน และ Promise
จำลองการดำเนินการของฟังก์ชัน
Firebase Local Emulator Suite ช่วยให้คุณสร้างและทดสอบแอปในเครื่องของคุณแทนที่จะทำให้ใช้งานได้ใน โปรเจ็กต์ Firebase เราขอแนะนำอย่างยิ่งให้ทำการทดสอบในเครื่องระหว่างการพัฒนา ส่วนหนึ่งเป็นเพราะการทดสอบนี้จะช่วยลดความเสี่ยงจากข้อผิดพลาดในการเขียนโค้ดที่อาจทำให้เกิดค่าใช้จ่ายในสภาพแวดล้อมที่ใช้งานจริง (เช่น ลูปไม่สิ้นสุด)
วิธีจำลองฟังก์ชัน
เรียกใช้
firebase emulators:startและตรวจสอบเอาต์พุตเพื่อดู URL ของ Emulator Suite UI โดยค่าเริ่มต้น URL จะเป็น localhost:4000 แต่อาจโฮสต์ในพอร์ตอื่นในเครื่องของคุณ ป้อน URL นั้นในเบราว์เซอร์เพื่อเปิด Emulator Suite UIตรวจสอบเอาต์พุตของคำสั่ง
firebase emulators:startเพื่อดู URL ของฟังก์ชัน HTTP URL จะมีลักษณะคล้ายกับhttp://localhost:5001/MY_PROJECT/us-central1/addMessageยกเว้นว่าMY_PROJECTจะถูกแทนที่ด้วยรหัสโปรเจ็กต์- พอร์ตอาจแตกต่างกันในเครื่องของคุณ
เพิ่มสตริงการค้นหา
?text=uppercasemeลงในส่วนท้ายของ URL ของฟังก์ชัน URL ควรมีลักษณะคล้ายกับhttp://localhost:5001/MY_PROJECT/us-central1/addMessage?text=uppercasemeคุณจะเปลี่ยนข้อความ "uppercaseme" เป็นข้อความที่กำหนดเอง ก็ได้สร้างข้อความใหม่โดยเปิด URL ในแท็บใหม่ในเบราว์เซอร์
ดูผลลัพธ์ของฟังก์ชันใน Emulator Suite UI โดยทำดังนี้
ในแท็บบันทึก คุณควรเห็นบันทึกใหม่ที่ระบุว่า ฟังก์ชัน HTTP ทำงานสำเร็จ
i functions: Beginning execution of "addMessage"i functions: Beginning execution of "makeUppercase"ในแท็บ Firestore คุณควรเห็นเอกสารที่มีข้อความต้นฉบับ รวมถึงข้อความเวอร์ชันตัวพิมพ์ใหญ่ (หากข้อความต้นฉบับคือ "uppercaseme" คุณจะเห็น "UPPERCASEME")
ทำให้ฟังก์ชันใช้งานได้ในสภาพแวดล้อมที่ใช้งานจริง
เมื่อฟังก์ชันทำงานได้ตามที่ต้องการในโปรแกรมจำลองแล้ว คุณก็สามารถดำเนินการทำให้ใช้งานได้ ทดสอบ และเรียกใช้ฟังก์ชันในสภาพแวดล้อมที่ใช้งานจริง โปรดทราบว่าหากต้องการทำให้ใช้งานได้ในสภาพแวดล้อมที่ใช้งานจริง โปรเจ็กต์ของคุณ ต้องใช้แพ็กเกจราคา Blaze ดูราคา Cloud Functions
หากต้องการทำตามบทแนะนำให้เสร็จสมบูรณ์ ให้ทำให้ฟังก์ชันใช้งานได้ แล้วเรียกใช้ฟังก์ชัน
เรียกใช้คำสั่งต่อไปนี้เพื่อทำให้ฟังก์ชันใช้งานได้
firebase deploy --only functions
หลังจากเรียกใช้คำสั่งนี้ Firebase CLI จะแสดง URL สำหรับปลายทางฟังก์ชัน HTTP คุณควรเห็นบรรทัดต่อไปนี้ในเทอร์มินัล
Function URL (addMessage): https://us-central1-MY_PROJECT.cloudfunctions.net/addMessageURL จะมีรหัสโปรเจ็กต์ของคุณ รวมถึงภูมิภาคสำหรับฟังก์ชัน HTTP แม้ว่าตอนนี้คุณจะไม่ต้องกังวล แต่ฟังก์ชัน HTTP ที่ใช้งานจริงบางฟังก์ชันควรระบุสถานที่ตั้งเพื่อลดเวลาในการตอบสนองของเครือข่าย
หากพบข้อผิดพลาดในการเข้าถึง เช่น "ไม่สามารถให้สิทธิ์เข้าถึง โปรเจ็กต์" ให้ลองตรวจสอบการตั้งชื่อแทนโปรเจ็กต์
ใช้ URL ที่ CLI แสดงผล เพิ่มพารามิเตอร์การค้นหาข้อความ แล้วเปิด URL ในเบราว์เซอร์
https://us-central1-MY_PROJECT.cloudfunctions.net/addMessage?text=uppercasemetooฟังก์ชันจะทำงานและเปลี่ยนเส้นทางเบราว์เซอร์ไปยัง Firebase คอนโซลที่ตำแหน่งฐานข้อมูล ซึ่งจัดเก็บสตริงข้อความ เหตุการณ์การเขียน นี้จะทริกเกอร์ฟังก์ชัน "แปลงเป็นตัวพิมพ์ใหญ่" ซึ่งจะเขียนสตริงเวอร์ชันตัวพิมพ์ใหญ่
หลังจากทำให้ฟังก์ชันใช้งานได้และเรียกใช้ฟังก์ชันแล้ว คุณจะ ดูบันทึกได้ในGoogle Cloudคอนโซล หากต้องการลบฟังก์ชัน ในการพัฒนาหรือเวอร์ชันที่ใช้งานจริง ให้ใช้ Firebase CLI
ในการใช้งานจริง คุณอาจต้องการเพิ่มประสิทธิภาพฟังก์ชันและควบคุมค่าใช้จ่ายโดยการตั้งค่าจำนวนอินสแตนซ์ต่ำสุดและสูงสุดที่จะเรียกใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกการรันไทม์เหล่านี้ได้ที่หัวข้อ ควบคุมลักษณะการทำงานของการปรับขนาด
ขั้นตอนถัดไป
ในเอกสารนี้ คุณสามารถดูข้อมูลเพิ่มเติมเกี่ยวกับวิธี จัดการฟังก์ชันสำหรับCloud Functions รวมถึงวิธี จัดการเหตุการณ์ทุกประเภทที่Cloud Functionsรองรับ
หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับ Cloud Functions คุณ สามารถทำสิ่งต่อไปนี้ได้
- อ่านเกี่ยวกับ กรณีการใช้งาน Cloud Functions
- ลองใช้ Cloud Functions Codelab
- ตรวจสอบและเรียกใช้โค้ดตัวอย่างใน GitHub