شروع به کار: اولین توابع خود را بنویسید ، آزمایش کنید و به کار گیرید

برای شروع کار با Cloud Functions ، سعی کنید از طریق این آموزش کار کنید ، که با کارهای راه اندازی مورد نیاز شروع می شود و از طریق ایجاد ، آزمایش و استقرار دو عملکرد مرتبط کار می کند:

  • addMessage() ، که در معرض یک URL است که یک مقدار متن را می پذیرد و آن را به ابر Firestore می نویسد.
  • makeUppercase() ، که عوامل در ابر Firestore نوشتن و تبدیل متن به حروف بزرگ.

ما ابر Firestore و توابع جاوا اسکریپت HTTP-باعث برای این نمونه در بخش انتخاب کرده اید چرا که این محرک زمینه را می توان به طور کامل از طریق آزمایش فایربیس محلی شبیه ساز سوئیت . این مجموعه ابزار همچنین از Really Time Database ، PubSub ، Auth و راه اندازهای قابل تماس HTTP پشتیبانی می کند. انواع دیگر از محرک های پس زمینه از قبیل راه دور پیکربندی، TestLab، و باعث تجزیه و تحلیل ترافیک همه را می توان تعاملی تست شده با استفاده از toolsets در این صفحه نشده است.

بخشهای زیر این آموزش جزئیات مراحل ساخت ، آزمایش و استقرار نمونه را شرح می دهد. اگر شما ترجیح می دهم فقط کد اجرا و بازرسی آن، پرش به نظر کد نمونه کامل .

یک پروژه Firebase ایجاد کنید

  1. در فایربیس کنسول ، روی Add کلیک کنید پروژه، سپس انتخاب کنید و یا یک نام پروژه را وارد کنید.

    اگر یک پروژه Google Cloud موجود دارید ، می توانید پروژه را از فهرست کشویی انتخاب کنید تا منابع Firebase را به آن پروژه اضافه کنید.

  2. (اختیاری) اگر شما در حال ایجاد یک پروژه جدید، شما می توانید ID پروژه را ویرایش کنید.

    Firebase به طور خودکار یک شناسه منحصر به فرد به پروژه Firebase شما اختصاص می دهد. مشاهده درک پروژه فایربیس در مورد چگونگی استفاده از ID فایربیس پروژه یاد بگیرند.

  3. روی ادامه کلیک کنید.

  4. (اختیاری) راهاندازی Google Analytics برای پروژه خود را، که شما را قادر به یک تجربه مطلوب با استفاده از هر یک از محصولات فایربیس زیر است:

    وقتی از شما خواسته، را انتخاب کنید به استفاده از یک موجود حساب Google Analytics یا برای ایجاد یک حساب کاربری جدید.
    اگر شما انتخاب کنید برای ایجاد یک حساب جدید، را انتخاب کنید خود را به محل تجزیه و تحلیل ترافیک گزارش ، سپس تنظیمات اشتراک گذاری داده ها و اصطلاحات گوگل آنالیز برای پروژه خود قبول کنید.

  5. کلیک کنید ایجاد پروژه (یا اضافه کردن فایربیس، اگر شما با استفاده از یک پروژه گوگل ابر موجود).

Firebase به طور خودکار منابع پروژه Firebase شما را تأمین می کند. پس از اتمام مراحل ، به صفحه نمای کلی پروژه Firebase در کنسول Firebase منتقل می شوید.

Node.js و Firebase CLI را تنظیم کنید

شما یک نیاز Node.js و محیط زیست را به توابع نوشتن، و شما فایربیس CLI به توابع استقرار نیاز به توابع ابر زمان اجرا. برای نصب Node.js و NPM ، گره نسخه مدیریت توصیه می شود.

هنگامی که شما Node.js و NPM نصب شده است، نصب فایربیس CLI به روش مورد نظر خود را. برای نصب CLI از طریق npm ، از موارد زیر استفاده کنید:

npm install -g firebase-tools

با این کار دستور firebase در سطح جهانی نصب می شود. اگر فرمان می افتد، شما ممکن است نیاز به تغییر مجوز NPM . به روز رسانی به آخرین نسخه از firebase-tools ، دوباره همان دستور.

پروژه خود را آغاز کنید

هنگامی که Firebase SDK را برای توابع Cloud مقداردهی اولیه می کنید ، یک پروژه خالی حاوی وابستگی ها و حداقل کد نمونه ایجاد می کنید و TypeScript یا JavaScript را برای تنظیم توابع انتخاب می کنید. برای اهداف این آموزش ، شما همچنین باید Cloud Firestore را اولیه کنید.

برای شروع پروژه:

  1. اجرا firebase login برای ورود از طریق مرورگر و تصدیق ابزار فایربیس.
  2. به فهرست پروژه Firebase خود بروید.
  3. اجرای firebase init firestore . برای این آموزش ، هنگام درخواست قوانین Firestore و پرونده های فهرست ، می توانید مقادیر پیش فرض را بپذیرید. اگر شما ابر Firestore در این پروژه استفاده نشده است، شما همچنین نیاز به انتخاب یک حالت شروع و محل سکونت برای Firestore همان طور که در کار با ابر Firestore آغاز شده .
  4. اجرای firebase init functions . این ابزار به شما امکان نصب وابستگی ها با npm را می دهد. این امن است به کاهش اگر شما می خواهید به مدیریت وابستگیها را در راه دیگری، هر چند اگر شما کاهش شما نیاز به اجرا npm install قبل از تقلید و یا استقرار توابع خود را.
  5. این ابزار به شما دو گزینه برای پشتیبانی از زبان می دهد:

    برای این آموزش، جاوا اسکریپت را انتخاب کنید.

بعد از موفقیت کامل این دستورات ، ساختار پروژه شما به این شکل است:

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": "10"} . این نسخه Node.js شما را برای نوشتن و استقرار توابع مشخص می کند. شما می توانید دیگر نسخه های پشتیبانی را انتخاب کنید .

ماژول های مورد نیاز را وارد کرده و یک برنامه را اولیه کنید

پس از انجام کارهای راه اندازی ، می توانید فهرست منبع را باز کرده و شروع به افزودن کد کنید ، همانطور که در بخش های بعدی توضیح داده شده است. برای این نمونه، پروژه خود را باید توابع ابر و ماژول های مدیریت SDK با استفاده از گره وارد require اظهارات. اضافه کردن خطوط مانند زیر به شما index.js فایل:

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

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

این خطوط بارگذاری firebase-functions و firebase-admin ماژول ها، و آماده سازی admin نمونه برنامه که از آن تغییرات ابر Firestore می تواند باشد. هر کجا که محیط مدیریت SDK پشتیبانی در دسترس است، به عنوان آن را برای FCM، احراز هویت و پایگاه فایربیس بیدرنگ است، آن را یک راه قدرتمند برای یکپارچه سازی فایربیس با استفاده از توابع ابر فراهم می کند.

Firebase CLI وقتی پروژه خود را اولیه می کنید ، به طور خودکار Firebase و Firebase SDK را برای ماژول های Cloud Functions Node نصب می کند. برای اضافه کردن کتابخانه 3 حزب به پروژه خود، شما می توانید تغییر package.json و اجرا npm install . برای اطلاعات بیشتر، نگاه کنید به وابستگی دسته .

اضافه کردن 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 نقطه پایانی است. هر گونه درخواست به نتایج نقطه پایانی در اکسپرس جیاس سبک درخواست پاسخ به و پاسخ : اعتراض به تصویب onRequest() پاسخ به تماس.

HTTP توابع همگام (شبیه به توابع قابل فراخوانی )، بنابراین شما باید پاسخ به سرعت به عنوان امکان پذیر کار و تسلیم با استفاده از ابر Firestore ارسال. addMessage() HTTP تابع یک مقدار متن به 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() تابع را اجرا هنگامی که ابر Firestore به نوشته شده است. ref.set تابع سند را به گوش دادن به تعریف می کند. به دلایل عملکردی ، باید تا حد امکان خاص باشید.

پرانتز برای مثال، {documentId} -surround "پارامترهای" نویسه عام که داده همسان خود را در پاسخ به تماس قرار دهد.

ابر Firestore باعث onWrite() پاسخ به تماس هر زمان که داده ها نوشته شده است و یا به روز شده در سند داده شده است.

توابع رویدادی مانند رویدادهای Cloud Firestore ناهمزمان هستند. تابع callback باید یا بازگشت null ، یک شی و یا یک وعده . اگر چیزی را برنگردانید ، عملکرد با اتمام ، سیگنالینگ خطا ، دوباره امتحان می شود. مشاهده همگام سازی، async است، و وعده .

اجرای عملکردهای خود را الگوبرداری کنید

فایربیس محلی شبیه ساز سوئیت اجازه می دهد تا شما را به ساخت و برنامه های تست بر روی دستگاه محلی خود را به جای اعزام به یک پروژه فایربیس. آزمایش محلی در حین توسعه اکیداً توصیه می شود ، تا حدی به این دلیل که خطر خطاهای کدگذاری را که به طور بالقوه ممکن است در محیط تولید متحمل هزینه شوند کاهش می دهد (به عنوان مثال یک حلقه بی نهایت).

برای تقلید از عملکردهای خود:

  1. اجرای firebase emulators:start و بررسی خروجی برای URL از شبیه ساز سوئیت UI. این پیش فرض به localhost را: 4،000 ، اما ممکن است بر روی یک پورت مختلف بر روی دستگاه خود را به میزبانی. آن 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 مشاهده کنید:

    1. در برگه گزارش ها، شما باید سیاهههای مربوط جدید نشان می دهد دید که توابع addMessage() و makeUppercase() فرار:

      توابع i: شروع اجرای "addMessage"

      i توابع: شروع اجرای "makeUppercase"

    2. در تب Firestore، شما باید ببینید یک سند حاوی پیام اصلی خود را به عنوان نسخه uppercased پیام خود را (اگر آن را در اصل "uppercaseme"، شما "UPPERCASEME" را ببینید).

توابع را در یک محیط تولید مستقر کنید

هنگامی که عملکردهای شما در شبیه ساز به دلخواه کار می کنند ، می توانید نسبت به استقرار ، آزمایش و اجرای آنها در محیط تولید اقدام کنید. در نظر داشته باشید که برای استقرار به توصیه می شود از Node.js 14 محیط زمان اجرا نگه دارید، پروژه خود را باید در شود طرح قیمت گذاری فروغ . مشاهده ابر توابع قیمت گذاری .

برای تکمیل آموزش، استقرار توابع خود را و سپس اجرا addMessage() را به دنبال makeUppercase() .

  1. برای اجرای توابع خود این دستور را اجرا کنید:

    $ firebase deploy --only functions
    

    بعد از اجرای این دستور ، Firebase CLI برای هر نقطه انتهایی عملکرد HTTP URL را خارج می کند. در ترمینال خود ، باید یک خط مانند زیر را ببینید:

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

    URL شامل شناسه پروژه شما و همچنین منطقه ای برای عملکرد HTTP است. اگرچه شما به نگرانی در مورد آن لازم نیست در حال حاضر، برخی از توابع HTTP تولید باید مشخص مکان برای به حداقل رساندن تاخیر شبکه.

    اگر خطاهای دسترسی به مانند شما روبرو می شوند "قادر به اجازه دسترسی به این پروژه،" بررسی کنید خود را aliasing به پروژه .

  2. با استفاده از addMessage() خروجی URL توسط CLI، اضافه کردن یک پارامتر جستجو متن، و باز کردن آن در یک مرورگر:

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

    این تابع مرورگر را به کنسول Firebase در محل پایگاه داده ای که رشته متن ذخیره شده است ، اجرا و هدایت می کند. این رویداد ارسال باعث makeUppercase() ، که می نویسد از نسخه بزرگ از رشته است.

بعد از استقرار و اجرای توابع، شما می توانید سیاهههای مربوط در کنسول فایربیس برای توابع ابر نمایش . اگر شما نیاز به حذف توابع در توسعه و یا تولید، استفاده از فایربیس CLI.

کد نمونه کامل را مرور کنید

در اینجا به اتمام است functions/index.js که حاوی توابع addMessage() و makeUppercase() . این توابع به شما امکان می دهد پارامتری را به نقطه پایانی HTTP منتقل کنید که مقداری را برای Cloud Firestore بنویسد و سپس با بزرگنمایی همه نویسه های رشته ، آن را تبدیل کند.

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

// 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 ، می توانید موارد زیر را انجام دهید:

آموزش تصویری

با مشاهده آموزشهای ویدئویی می توانید درباره عملکردهای Cloud بیشتر بدانید. در این ویدئو ، راهنمایی دقیق در مورد شروع کار با عملکردهای Cloud ، از جمله Node.js و تنظیم CLI را خواهید یافت.