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

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

  • ฟังก์ชัน "เพิ่มข้อความ" ที่แสดง URL ซึ่งยอมรับค่าข้อความและเขียนค่าดังกล่าวลงใน Cloud Firestore
  • ฟังก์ชัน "แปลงเป็นตัวพิมพ์ใหญ่" ที่ทริกเกอร์เมื่อมีการเขียน Cloud Firestore และแปลง ข้อความเป็นตัวพิมพ์ใหญ่

เราเลือก Cloud Firestore และฟังก์ชัน JavaScript ที่ทริกเกอร์โดย HTTP สำหรับ ตัวอย่างนี้ ส่วนหนึ่งเป็นเพราะสามารถทดสอบทริกเกอร์เบื้องหลังเหล่านี้ได้อย่างละเอียด ผ่าน Firebase Local Emulator Suite ชุดเครื่องมือนี้ ยังรองรับ Realtime Database, PubSub, Auth และทริกเกอร์ที่เรียกใช้ได้ผ่าน HTTP ทริกเกอร์เบื้องหลังประเภทอื่นๆ เช่น Remote Config, TestLab และ Analytics สามารถ ทดสอบแบบโต้ตอบได้โดยใช้ชุดเครื่องมือที่ไม่ได้ อธิบายไว้ในหน้านี้

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

สร้างโปรเจ็กต์ 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

ตั้งค่า Node.js และ Firebase CLI

คุณต้องมีสภาพแวดล้อม 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 เวอร์ชันล่าสุด ให้เรียกใช้คำสั่งเดิมอีกครั้ง

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

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

  6. CLI มีตัวเลือกให้ติดตั้งทรัพยากร Dependency ด้วย npm คุณปฏิเสธได้หากต้องการจัดการทรัพยากร Dependency ด้วยวิธีอื่น แต่หากปฏิเสธ คุณจะต้องเรียกใช้ npm install ก่อนที่จะจำลองหรือทำให้ฟังก์ชันใช้งานได้

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

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

ไฟล์ package.json ที่สร้างขึ้นระหว่างการเริ่มต้นมีคีย์สำคัญ คือ "engines": {"node": "16"} ซึ่งระบุเวอร์ชัน Node.js สำหรับการเขียนและทำให้ฟังก์ชันใช้งานได้ คุณสามารถ เลือกเวอร์ชันอื่นๆ ที่รองรับได้

นำเข้าโมดูลที่จำเป็นและเริ่มต้นแอป

หลังจากทำตามงานการตั้งค่าเสร็จแล้ว คุณสามารถเปิดไดเรกทอรีต้นทางและเริ่มเพิ่มโค้ดตามที่อธิบายไว้ในส่วนต่อไปนี้ สำหรับตัวอย่างนี้ โปรเจ็กต์ของคุณต้องนำเข้าโมดูล Cloud Functions และ Admin SDK โดยใช้คำสั่ง require ของ Node เพิ่มบรรทัดต่อไปนี้ลงในไฟล์ index.js

// The Cloud Functions for Firebase SDK to create Cloud Functions and set up triggers.
const functions = require('firebase-functions/v1');

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

บรรทัดเหล่านี้จะโหลดโมดูล firebase-functions และ firebase-admin รวมถึง เริ่มต้นอินสแตนซ์แอป admin ซึ่งสามารถทำการเปลี่ยนแปลง Cloud Firestore ได้ Admin SDK เป็นวิธีที่มีประสิทธิภาพในการผสานรวม Firebase โดยใช้ Cloud Functions ในทุกที่ที่การรองรับ Admin SDK พร้อมใช้งาน เช่น สำหรับ FCM, Authentication, และ Firebase Realtime Database

CLI จะติดตั้งโมดูล Node ของ Firebase และ SDK สำหรับ โดยอัตโนมัติเมื่อคุณเริ่มต้นโปรเจ็กต์FirebaseFirebaseCloud Functions หากต้องการเพิ่มไลบรารีของบุคคลที่สามลงในโปรเจ็กต์ คุณสามารถแก้ไข package.json และเรียกใช้ npm install ดูข้อมูลเพิ่มเติมได้ที่ จัดการทรัพยากร Dependency

เพิ่มฟังก์ชัน addMessage()

สำหรับฟังก์ชัน addMessage() ให้เพิ่มบรรทัดต่อไปนี้ลงใน index.js

// Take the text parameter passed to this HTTP endpoint and insert it into
// Firestore under the path /messages/:documentId/original
exports.addMessage = functions.https.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 admin
    .firestore()
    .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.` });
});

ฟังก์ชัน addMessage() เป็นปลายทาง HTTP คำขอใดๆ ที่ส่งไปยังปลายทาง จะส่งผลให้มีการส่งออบเจ็กต์ คำขอและการตอบกลับ ในรูปแบบ ExpressJS ไปยังการเรียกกลับ onRequest()

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

เพิ่มฟังก์ชัน makeUppercase()

สำหรับฟังก์ชัน makeUppercase() ให้เพิ่มบรรทัดต่อไปนี้ลงใน index.js

// Listens for new messages added to /messages/:documentId/original and creates an
// uppercase version of the message to /messages/:documentId/uppercase
exports.makeUppercase = functions.firestore
  .document("/messages/{documentId}")
  .onCreate((snap, context) => {
    // Grab the current value of what was written to Firestore.
    const original = snap.data().original;

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

    const uppercase = original.toUpperCase();

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

ฟังก์ชัน makeUppercase() จะทำงานเมื่อมีการเขียน Cloud Firestore ฟังก์ชัน ref.set จะกำหนดเอกสารที่จะรับฟัง คุณควรระบุให้เฉพาะเจาะจงที่สุดเพื่อประสิทธิภาพ

วงเล็บปีกกา เช่น {documentId} จะล้อมรอบ "พารามิเตอร์" ซึ่งเป็นไวลด์การ์ดที่แสดงข้อมูลที่ตรงกันในการเรียกกลับ

Cloud Firestore จะทริกเกอร์ onCreate() การเรียกกลับทุกครั้งที่มีการเพิ่มข้อความใหม่

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

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

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 addMessage() ซึ่งจะมีลักษณะคล้ายกับ 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. ในแท็บบันทึก คุณควรเห็นบันทึกใหม่ที่ระบุว่าฟังก์ชัน addMessage() และ makeUppercase() ทำงานแล้ว

      i functions: Beginning execution of "addMessage"

      i functions: Beginning execution of "makeUppercase"

    2. ในแท็บ Firestore คุณควรเห็นเอกสารที่มีข้อความเดิม รวมถึงข้อความเวอร์ชันตัวพิมพ์ใหญ่ (หากข้อความเดิมคือ "uppercaseme" คุณจะเห็น "UPPERCASEME")

ทำให้ฟังก์ชันใช้งานได้ในสภาพแวดล้อมฮาร์ดแวร์และซอฟต์แวร์

เมื่อฟังก์ชันทำงานได้ตามที่ต้องการในโปรแกรมจำลองแล้ว คุณก็ดำเนินการทำให้ฟังก์ชันใช้งานได้ ทดสอบ และเรียกใช้ในสภาพแวดล้อมฮาร์ดแวร์และซอฟต์แวร์ได้ โปรดทราบ ว่าหากต้องการทำให้ใช้งานได้ในสภาพแวดล้อมรันไทม์ของ Node.js 14 โปรเจ็กต์ของคุณ ต้องใช้แพ็กเกจ Blaze ดูราคา Cloud Functions

หากต้องการทำบทแนะนำให้เสร็จสมบูรณ์ ให้ทำให้ฟังก์ชันใช้งานได้ แล้วเรียกใช้ addMessage() เพื่อทริกเกอร์ makeUppercase()

  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 addMessage() ที่ CLI แสดงผล เพิ่มพารามิเตอร์การค้นหาข้อความ แล้วเปิด URL ในเบราว์เซอร์

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

    ฟังก์ชันจะทำงานและเปลี่ยนเส้นทางเบราว์เซอร์ไปยัง Firebase คอนโซลที่ตำแหน่งฐานข้อมูล ซึ่งเก็บสตริงข้อความไว้ เหตุการณ์การเขียนนี้ จะทริกเกอร์ makeUppercase() ซึ่งจะเขียนสตริงเวอร์ชันตัวพิมพ์ใหญ่

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

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

ตรวจสอบโค้ดตัวอย่างที่สมบูรณ์

นี่คือ functions/index.js ที่สมบูรณ์ซึ่งมีฟังก์ชัน addMessage() และ makeUppercase() ฟังก์ชันเหล่านี้ช่วยให้คุณส่งพารามิเตอร์ไปยังปลายทาง HTTP ที่เขียนค่าลงใน Cloud Firestore แล้วแปลงค่าดังกล่าวโดยการเปลี่ยนอักขระทั้งหมดในสตริงเป็นตัวพิมพ์ใหญ่

// The Cloud Functions for Firebase SDK to create Cloud Functions and set up triggers.
const functions = require('firebase-functions/v1');

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

// Take the text parameter passed to this HTTP endpoint and insert it into
// Firestore under the path /messages/:documentId/original
exports.addMessage = functions.https.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 admin
    .firestore()
    .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 creates an
// uppercase version of the message to /messages/:documentId/uppercase
exports.makeUppercase = functions.firestore
  .document("/messages/{documentId}")
  .onCreate((snap, context) => {
    // Grab the current value of what was written to Firestore.
    const original = snap.data().original;

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

    const uppercase = original.toUpperCase();

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

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

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

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