מעטפת Cloud Functions מספקת מעטפת אינטראקטיבית להפעלת פונקציות עם נתוני בדיקה. המעטפת תומכת בכל סוגי הטריגרים.
הגדר אישורי מנהל מערכת (אופציונלי)
אם אתה רוצה שבדיקות הפונקציות שלך יתקשרו עם ממשקי API של Google או ממשקי API אחרים של Firebase דרך Firebase Admin SDK , ייתכן שיהיה עליך להגדיר אישורי מנהל מערכת.
- לטריגרים של Cloud Firestore ו- Realtime Database יש כבר אישורים מספיקים ואינם דורשים הגדרה נוספת.
- כל שאר ממשקי ה-API, כולל ממשקי API של Firebase כגון Authentication ו-FCM או ממשקי API של Google כגון Cloud Translation או Cloud Speech, דורשים את שלבי ההגדרה המתוארים בסעיף זה. זה חל בין אם אתה משתמש במעטפת Cloud Functions או
firebase emulators:start
.
כדי להגדיר אישורי מנהל עבור פונקציות מדמות:
- פתח את חלונית חשבונות השירות של Google Cloud Console.
- ודא שחשבון שירות ברירת המחדל של App Engine נבחר, והשתמש בתפריט האפשרויות מימין כדי לבחור צור מפתח .
- כאשר תתבקש, בחר JSON עבור סוג המפתח, ולחץ על צור .
הגדר את אישורי ברירת המחדל של Google כך שיצביעו על המפתח שהורד:
יוניקס
export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json" firebase functions:shell
חלונות
set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json firebase functions:shell
לאחר השלמת השלבים האלה, מבחני הפונקציות שלך יכולים לגשת לממשקי Firebase ו-Google API באמצעות ה- Admin SDK . לדוגמה, בעת בדיקת טריגר של אימות, הפונקציה המדומה יכולה לקרוא ל- admin.auth().getUserByEmail(email)
.
שרת פונקציות באמצעות מעטפת Cloud Functions
מעטפת Cloud Functions מחקה את כל סוגי מפעילי הפונקציות עם מעטפת אינטראקטיבית להפעלת הפונקציות עם נתוני בדיקה. האפשרויות משתנות לפי סוג הפונקציה, אך פורמט השימוש הבסיסי הוא:
myFunctionName(data, options)
פרמטר data
נדרש עבור מפעילי מסד נתונים בזמן אמת, Cloud Firestore ו-PubSub, ואופציונלי עבור כל סוגי הפונקציות האחרים. כמו כן, פרמטר options
האופציונלי תקף רק עבור פונקציות Realtime Database ו-Cloud Firestore.
לחלופין, ניתן לטעון נתוני בדיקה מקובץ מקומי על ידי שמירת הקובץ כמשתנה והפעלת פונקציה איתו:
var data = require('./path/to/testData.json');
myFunction(data);
התקן והגדר את מעטפת Cloud Functions
כדי להשתמש בתכונה זו, firebase-tools
חייב להיות גרסה מינימלית 3.11.0, ול- firebase-functions
SDK חייבת להיות גרסה מינימלית 0.6.2. כדי לעדכן את שניהם, הפעל את הפקודות הבאות בספריית functions/
עבור הפרויקט שלך:
npm install --save firebase-functions@latest
npm install -g firebase-tools
אם אתה משתמש במשתני תצורה של פונקציות מותאמות אישית, הפעל תחילה את הפקודה כדי לקבל את התצורה המותאמת אישית שלך (הפעל את זה בתוך ספריית functions
) בסביבה המקומית שלך:
firebase functions:config:get > .runtimeconfig.json # If using Windows PowerShell, replace the above with: # firebase functions:config:get | ac .runtimeconfig.json
לבסוף, הפעל את המעטפת עם הפקודה הבאה:
firebase functions:shell
הפעל פונקציות HTTPS
להפעלת פונקציות HTTPS במעטפת, השימוש זהה למודול request
NPM, אך החלף request
בשם הפונקציה שברצונך לחקות. לדוגמה:
# invoke
myHttpsFunction()
myHttpsFunction.get()
myHttpsFunction.post()
# invoke at sub-path
myHttpsFunction('/path')
myHttpsFunction.get('/path')
myHttpsFunction.post('/path')
# send POST request with form data
myHttpsFunction.post('/path').form( {foo: 'bar' })
הפעל פונקציות הניתנות להתקשרות ב-HTTPS
בעת הפעלת פונקציות הניתנות להתקשרות HTTPS באופן מקומי, תצטרך לספק נתוני בדיקה מתאימים.
# invoke
myCallableFunction('test data')
myCallableFunction({'foo': 'bar'})
לחלופין, תוכל להעביר Firebase-Instance-ID-token
כפרמטר השני. זה חייב להיות מחרוזת.
# invoke with FCM registration token
myCallableFunction('test data', {instanceIdToken: 'sample token'})
אמולציה של context.auth
אינה זמינה כעת.
הפעל פונקציות של מסד נתונים בזמן אמת
בעת הפעלת פונקציות של מסד נתונים בזמן אמת באופן מקומי, תצטרך לספק נתוני בדיקה מתאימים. זה בדרך כלל אומר לספק נתוני בדיקה חדשים עבור פעולות onCreate
, נתונים ישנים/הוסרו עבור פעולות onDelete
, והן עבור פונקציות onUpdate
או onWrite
:
# invoke onCreate function
myDatabaseFunction('new_data')
# invoke onDelete function
myDatabaseFunction('old_data')
# invoke onUpdate or onWrite function
myDatabaseFunction({before: 'old_data', after: 'new_data' })
בנוסף לאפשרויות before/after
, המעטפת מספקת את אפשרות params
לשימוש בלעג לתווים כלליים בנתיב:
# mock wildcards in path, for example: if the path was input/{group}/{id}
myDatabaseFunction('data', {params: {group: 'a', id: 123}})
כברירת מחדל, המעטפת מפעילה פונקציות של מסד נתונים בזמן אמת עם הרשאות אדמין (חשבון שירות). השתמש באפשרות auth
כדי להפעיל במקום זאת פונקציות כמשתמש קצה מסוים, או כמשתמש לא מאומת:
# to mock unauthenticated user
myDatabaseFunction('data', {authMode: 'USER'})
# to mock end user
myDatabaseFunction('data', {auth: {uid: 'abcd'}})
הפעל את פונקציות Firestore
בעת הפעלת פונקציות Firestore באופן מקומי, תצטרך לספק נתוני בדיקה מתאימים. זה אומר בדרך כלל לספק נתוני בדיקה חדשים עבור פעולות onCreate
, נתונים ישנים/הוסרו עבור פעולות onDelete
, והן עבור פונקציות onUpdate
או onWrite
. שים לב שנתוני Firestore חייבים להיות זוגות מפתח-ערך; ראה סוגי נתונים נתמכים .
# invoke onCreate function
myFirestoreFunction({foo: ‘new’})
# invoke onDelete function
myFirestoreFunction({foo: ‘old’})
# invoke onUpdate or onWrite function
myFirestoreFunction({before: {foo: ‘old’}, after: {foo: ‘new’} })
בנוסף לשדות before/after
של אובייקט data
, אתה יכול להשתמש בשדות params
באובייקט options
כדי ללעוג לתווים כלליים בשם מסמך:
# mock wildcards in document name, for example: if the name was input/{group}/{id}
myFirestoreFunction({foo: ‘new’}, {params: {group: 'a', id: 123}})
המעטפת תמיד מפעילה פונקציות של Firestore עם הרשאות ניהול, מה שאומר שהיא לועגת לאירוע יצירה/עדכון/מחיקה כאילו הוא נעשה על ידי משתמש ניהולי.
הפעל את פונקציות PubSub
עבור פונקציות PubSub, הכנס את מטען ההודעה שלך במופע Buffer
והוסף אופציונלי תכונות נתונים כפי שמוצג:
// invokes a function with the JSON message { hello: 'world' } and attributes { foo: 'bar' }
myPubsubFunction({data: new Buffer('{"hello":"world"}'), attributes: {foo: 'bar'}})
הפעל פונקציות של Analytics
אתה יכול להפעיל פונקציה של Analytics ללא כל נתונים על ידי הפעלת myAnalyticsFunction()
במעטפת. כדי להפעיל את הפונקציה עם נתוני בדיקה, מומלץ להגדיר משתנה עבור שדות נתוני האירוע הספציפיים שהפונקציה שלך צריכה:
var data = {
eventDim: [{
// populates event.data.params
params: {foo: {stringValue: 'bar'} },
// Also valid:
// {intValue: '10'}, {floatValue: '1.0'}, {doubleValue: '1.0'}
// populates event.data.name
name: 'event_name',
// populates event.data.logTime, specify in microseconds
timestampMicros: Date.now() * 1000,
// populates event.data.previousLogTime, specify in microseconds
previousTimestampMicros: Date.now() * 1000,
// populates event.data.reportingDate, specify in 'YYYYMMDD' format
date: '20170930',
// populates event.data.valueInUSD
valueInUsd: 230
}],
userDim: userDim
};
myAnalyticsFunction(data);
הפעל פונקציות אחסון ואימות
עבור פונקציות אחסון ואימות, הפעל את הפונקציה המקומית עם נתוני הבדיקה שתרצה לראות בתוך הפונקציה. נתוני הבדיקה שלך חייבים לעמוד בפורמטים המתאימים של הנתונים:
- עבור אחסון בענן:
ObjectMetadata
- עבור אימות:
UserRecord
ציין רק את השדות שהקוד שלך תלוי בהם, או אף אחד בכלל אם אתה רק רוצה להפעיל את הפונקציה.