Cloud Functions рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЛ рдЖрдЬрд╝рдорд╛рдПрдВ. рдЗрд╕рдореЗрдВ рдЬрд╝рд░реВрд░реА рд╕реЗрдЯрдЕрдк рдЯрд╛рд╕реНрдХ рд╕реЗ рд▓реЗрдХрд░, рджреЛ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ, рдЙрдирдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдбрд┐рдкреНрд▓реЙрдп рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
- "рдореИрд╕реЗрдЬ рдЬреЛрдбрд╝реЗрдВ" рдлрд╝рдВрдХреНрд╢рди, рдПрдХ рдРрд╕рд╛ рдпреВрдЖрд░рдПрд▓ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдЬреЛ рдЯреЗрдХреНрд╕реНрдЯ рд╡реИрд▓реНрдпреВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрд╕реЗ 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/v2/https");
const {onDocumentCreated} = require("firebase-functions/v2/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 рдФрд░ рдПрдЪрдЯреАрдЯреАрдкреА рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдЪреБрдиреЗ рд╣реИрдВ. рдЗрд╕рдХреА рдПрдХ рд╡рдЬрд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЗрди рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдЯреНрд░рд┐рдЧрд░ рдХреЛ Firebase Local Emulator Suite рдХреЗ рдЬрд╝рд░рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЯреЗрд╕реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдпрд╣ рдЯреВрд▓рд╕реЗрдЯ, Realtime Database, Cloud Storage, PubSub, Auth, рдФрд░ рдПрдЪрдЯреАрдЯреАрдкреА рдХреЙрд▓ рдХрд┐рдП рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рдЯреНрд░рд┐рдЧрд░ рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ. Remote Config рдФрд░ TestLab рдЯреНрд░рд┐рдЧрд░ рдЬреИрд╕реЗ рдЕрдиреНрдп рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдЯреНрд░рд┐рдЧрд░ рдХреА рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рддрд░реАрдХреЗ рд╕реЗ рдЬрд╛рдВрдЪ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ. рдЗрд╕рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдкреЗрдЬ рдкрд░ рдирд╣реАрдВ рдмрддрд╛рдП рдЧрдП рдЯреВрд▓рд╕реЗрдЯ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ.
рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдЗрди рд╕реЗрдХреНрд╢рди рдореЗрдВ, рд╕реИрдВрдкрд▓ рдмрдирд╛рдиреЗ, рдЙрд╕рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ, рдФрд░ рдЙрд╕реЗ рдбрд┐рдкреНрд▓реЙрдп рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ.
Firebase рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛
рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ Firebase рдпрд╛ Cloud рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ?
рдЕрдЧрд░ рдЖрдкрдиреЗ Firebase рдпрд╛ Google Cloud рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдкрд╣рд▓реЗ рдХрднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рддрд░реАрдХрд╛ рдЕрдкрдирд╛рдПрдВ.
рдЕрдЧрд░ рдЖрдкрдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдпрд╛ Firebase рдкреНрд░реЛрдЬреЗрдХреНрдЯ (рдФрд░ рдЙрд╕рдХрд╛ Google Cloud рдкреНрд░реЛрдЬреЗрдХреНрдЯ) рдмрдирд╛рдирд╛ рд╣реИ, рддреЛ рдпрд╣ рддрд░реАрдХрд╛ рднреА рдЕрдкрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ.
- Firebase console рдореЗрдВ рд╕рд╛рдЗрди рдЗрди рдХрд░реЗрдВ.
- рдирдпрд╛ Firebase рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ.
-
рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝реАрд▓реНрдб рдореЗрдВ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо рдбрд╛рд▓реЗрдВ.
рдЕрдЧрд░ рдЖрдк рдХрд┐рд╕реА Google Cloud рд╕рдВрдЧрдарди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣ рдЪреБрдирдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЕрдкрдирд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд┐рд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдмрдирд╛рдирд╛ рд╣реИ.
- рдЕрдЧрд░ рдЖрдкрд╕реЗ рдХрд╣рд╛ рдЬрд╛рдП, рддреЛ Firebase рдХреА рд╢рд░реНрддреЗрдВ рдкрдврд╝реЗрдВ рдФрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ. рдЗрд╕рдХреЗ рдмрд╛рдж, рдЬрд╛рд░реА рд░рдЦреЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ.
- (рдЬрд╝рд░реВрд░реА рдирд╣реАрдВ) Firebase рдХрдВрд╕реЛрд▓ рдореЗрдВ рдПрдЖрдИ рдХреА рдорджрдж рдкрд╛рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдЪрд╛рд▓реВ рдХрд░реЗрдВ. рдЗрд╕реЗ "Firebase рдореЗрдВ Gemini" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ. рдЗрд╕рд╕реЗ рдЖрдкрдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдкреНрд░реЛрд╕реЗрд╕ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИ.
-
(рдЬрд╝рд░реВрд░реА рдирд╣реАрдВ) рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП Google Analytics рд╕реЗрдЯ рдЕрдк рдХрд░реЗрдВ. рдЗрд╕рд╕реЗ рдЗрди Firebase рдкреНрд░реЙрдбрдХреНрдЯ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ, рдмреЗрд╣рддрд░ рдЕрдиреБрднрд╡ рдорд┐рд▓рддрд╛ рд╣реИ: Firebase A/B Testing, Cloud Messaging, Crashlytics, In-App Messaging, рдФрд░ Remote Config (рдЗрд╕рдореЗрдВ Personalization рд╢рд╛рдорд┐рд▓ рд╣реИ).
рдХреЛрдИ рдореМрдЬреВрджрд╛ Google Analytics рдЦрд╛рддрд╛ рдЪреБрдиреЗрдВ рдпрд╛ рдирдпрд╛ рдЦрд╛рддрд╛ рдмрдирд╛рдПрдВ. рдирдпрд╛ рдЦрд╛рддрд╛ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, Analytics рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреА рдЬрдЧрд╣ рдЪреБрдиреЗрдВ. рдЗрд╕рдХреЗ рдмрд╛рдж, рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╢реЗрдпрд░ рдХрд░рдиреЗ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдФрд░ Google Analytics рд╢рд░реНрддреЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ.
- рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ.
Firebase рдЖрдкрдХрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реИ, рдХреБрдЫ рд╢реБрд░реБрдЖрддреА рд╕рдВрд╕рд╛рдзрди рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рддрд╛ рд╣реИ, рдФрд░ рдЬрд╝рд░реВрд░реА рдПрдкреАрдЖрдИ рдЪрд╛рд▓реВ рдХрд░рддрд╛ рд╣реИ. рдкреНрд░реЛрд╕реЗрд╕ рдкреВрд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ Firebase рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЕрдкрдиреЗ Firebase рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЦрд╛рд╕ рдЬрд╛рдирдХрд╛рд░реА рд╡рд╛рд▓реЗ рдкреЗрдЬ рдкрд░ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛.
рдореМрдЬреВрджрд╛ Cloud рдкреНрд░реЛрдЬреЗрдХреНрдЯ
рдЕрдЧрд░ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ Google Cloud рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде Firebase рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдпрд╣ рддрд░реАрдХрд╛ рдЕрдкрдирд╛рдПрдВ. рдореМрдЬреВрджрд╛ Google Cloud рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ "Firebase рдЬреЛрдбрд╝рдиреЗ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╝реНрдпрд╛рджрд╛ рдЬрд╛рдиреЗрдВ.
- рдЙрд╕ рдЦрд╛рддреЗ рд╕реЗ Firebase рдХрдВрд╕реЛрд▓ рдореЗрдВ рд╕рд╛рдЗрди рдЗрди рдХрд░реЗрдВ рдЬрд┐рд╕рд╕реЗ рдЖрдкрдХреЛ рдореМрдЬреВрджрд╛ Google Cloud рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдРрдХреНрд╕реЗрд╕ рдорд┐рд▓рддрд╛ рд╣реИ.
- рдирдпрд╛ Firebase рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ.
- рдкреЗрдЬ рдкрд░ рд╕рдмрд╕реЗ рдиреАрдЪреЗ, Google Cloud рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ Firebase рдЬреЛрдбрд╝реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ.
- рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝реАрд▓реНрдб рдореЗрдВ, рдореМрдЬреВрджрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо рдбрд╛рд▓рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ. рдЗрд╕рдХреЗ рдмрд╛рдж, рджрд┐рдЦрд╛рдИ рдЧрдИ рд╕реВрдЪреА рдореЗрдВ рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЪреБрдиреЗрдВ.
- рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЦреЛрд▓реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ.
- рдЕрдЧрд░ рдЖрдкрд╕реЗ рдХрд╣рд╛ рдЬрд╛рдП, рддреЛ Firebase рдХреА рд╢рд░реНрддреЗрдВ рдкрдврд╝реЗрдВ рдФрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ. рдЗрд╕рдХреЗ рдмрд╛рдж, рдЬрд╛рд░реА рд░рдЦреЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ.
- (рдЬрд╝рд░реВрд░реА рдирд╣реАрдВ) Firebase рдХрдВрд╕реЛрд▓ рдореЗрдВ рдПрдЖрдИ рдХреА рдорджрдж рдкрд╛рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдЪрд╛рд▓реВ рдХрд░реЗрдВ. рдЗрд╕реЗ "Firebase рдореЗрдВ Gemini" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ. рдЗрд╕рд╕реЗ рдЖрдкрдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдкреНрд░реЛрд╕реЗрд╕ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИ.
-
(рдЬрд╝рд░реВрд░реА рдирд╣реАрдВ) рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП Google Analytics рд╕реЗрдЯ рдЕрдк рдХрд░реЗрдВ. рдЗрд╕рд╕реЗ рдЗрди Firebase рдкреНрд░реЙрдбрдХреНрдЯ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ, рдмреЗрд╣рддрд░ рдЕрдиреБрднрд╡ рдорд┐рд▓рддрд╛ рд╣реИ: Firebase A/B Testing, Cloud Messaging, Crashlytics, In-App Messaging, рдФрд░ Remote Config (рдЗрд╕рдореЗрдВ Personalization рд╢рд╛рдорд┐рд▓ рд╣реИ).
рдХреЛрдИ рдореМрдЬреВрджрд╛ Google Analytics рдЦрд╛рддрд╛ рдЪреБрдиреЗрдВ рдпрд╛ рдирдпрд╛ рдЦрд╛рддрд╛ рдмрдирд╛рдПрдВ. рдирдпрд╛ рдЦрд╛рддрд╛ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, Analytics рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреА рдЬрдЧрд╣ рдЪреБрдиреЗрдВ. рдЗрд╕рдХреЗ рдмрд╛рдж, рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╢реЗрдпрд░ рдХрд░рдиреЗ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдФрд░ Google Analytics рд╢рд░реНрддреЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ.
- Firebase рдЬреЛрдбрд╝реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ.
Firebase рдЖрдкрдХреЗ рдореМрдЬреВрджрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ Firebase рдЬреЛрдбрд╝рддрд╛ рд╣реИ. рдкреНрд░реЛрд╕реЗрд╕ рдкреВрд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ Firebase рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЕрдкрдиреЗ Firebase рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЦрд╛рд╕ рдЬрд╛рдирдХрд╛рд░реА рд╡рд╛рд▓реЗ рдкреЗрдЬ рдкрд░ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛.
рдЕрдкрдирд╛ рдПрдирд╡рд╛рдпрд░рдореЗрдВрдЯ рдФрд░ Firebase CLI рд╕реЗрдЯ рдЕрдк рдХрд░рдирд╛
Node.js
рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ Node.js рдПрдирд╡рд╛рдпрд░рдореЗрдВрдЯ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реЛрдЧреА. рд╕рд╛рде рд╣реА, рдлрд╝рдВрдХреНрд╢рди рдХреЛ Cloud Functions рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдбрд┐рдкреНрд▓реЙрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ Firebase CLI рдХреА рдЬрд╝рд░реВрд░рдд рд╣реЛрдЧреА. Node.js рдФрд░ npm рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Node Version Manager рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ.
Node.js рдФрд░ npm рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЕрдкрдиреА рдкрд╕рдВрдж рдХреЗ рддрд░реАрдХреЗ рд╕реЗ Firebase рд╕реАрдПрд▓рдЖрдИ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ. npm рдХреЗ рдЬрд╝рд░рд┐рдП рд╕реАрдПрд▓рдЖрдИ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХрдорд╛рдВрдб рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ:
npm install -g firebase-tools
рдЗрд╕рд╕реЗ, рджреБрдирд┐рдпрд╛ рднрд░ рдореЗрдВ рдЙрдкрд▓рдмреНрдз Firebase рдХрдорд╛рдВрдб рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ. рдЕрдЧрд░ рдирд┐рд░реНрджреЗрд╢ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ npm рдХреА рдЕрдиреБрдорддрд┐рдпрд╛рдВ рдмрджрд▓рдиреА рдкрдбрд╝ рд╕рдХрддреА рд╣реИрдВ.
firebase-tools
рдХреЗ рдирдП рд╡рд░реНрд╢рди рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрд╕реА рдХрдорд╛рдВрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдВ.
Python
рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ Python рдПрдирд╡рд╛рдпрд░рдореЗрдВрдЯ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реЛрдЧреА. рд╕рд╛рде рд╣реА, Cloud Functions рд░рдирдЯрд╛рдЗрдо рдкрд░ рдлрд╝рдВрдХреНрд╢рди рдбрд┐рдкреНрд▓реЙрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ Firebase CLI рдХреА рдЬрд╝рд░реВрд░рдд рд╣реЛрдЧреА. рд╣рдорд╛рд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, venv
рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ. Python рдХреЗ 3.10 рд╕реЗ 3.13 рд╡рд░реНрд╢рди рддрдХ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ.
рдЗрдирдореЗрдВ 3.13 рд╡рд░реНрд╢рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░рдирдЯрд╛рдЗрдо рд╣реЛрддрд╛ рд╣реИ.
Python рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рддрд░реАрдХреЗ рд╕реЗ Firebase CLI рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ.
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╢реБрд░реВ рдХрд░рдирд╛
Firebase рдХреЗ рд▓рд┐рдП Cloud Functions рдПрд╕рдбреАрдХреЗ рдЯреВрд▓ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдкрд░, рдПрдХ рдЦрд╛рд▓реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирддрд╛ рд╣реИ. рдЗрд╕рдореЗрдВ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдФрд░ рдХреБрдЫ рд╕реИрдВрдкрд▓ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ. рдЕрдЧрд░ Node.js рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП TypeScript рдпрд╛ JavaScript рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЛ рдЪреБрдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ Cloud Firestore рдХреЛ рднреА рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛.
рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
- рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдФрд░ Firebase CLI рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
firebase login
рдЪрд▓рд╛рдПрдВ. - рдЕрдкрдиреЗ Firebase рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдбрд╛рдпрд░реЗрдХреНрдЯреНрд░реА рдкрд░ рдЬрд╛рдПрдВ.
firebase init firestore
рд░рди рдХрд░реЗрдВ. рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рд▓рд┐рдП, Firestore рдХреЗ рдирд┐рдпрдореЛрдВ рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдореНрдкреНрдЯ рдорд┐рд▓рдиреЗ рдкрд░, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реИрд▓реНрдпреВ рд╕реНрд╡реАрдХрд╛рд░ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ. рдЕрдЧрд░ рдЖрдкрдиреЗ рдЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЕрдм рддрдХ Cloud Firestore рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ Firestore рдХреЗ рд▓рд┐рдП рд╢реБрд░реБрдЖрддреА рдореЛрдб рдФрд░ рдЬрдЧрд╣ рднреА рдЪреБрдирдиреА рд╣реЛрдЧреА. рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ Cloud Firestore рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╢реБрд░реВ рдХрд░рдирд╛ рд▓реЗрдЦ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ.firebase init functions
рд░рди рдХрд░реЗрдВ. рд╕реАрдПрд▓рдЖрдИ, рдЖрдкрд╕реЗ рдореМрдЬреВрджрд╛ рдХреЛрдбрдмреЗрд╕ рдЪреБрдирдиреЗ рдпрд╛ рдирдпрд╛ рдХреЛрдбрдмреЗрд╕ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдЙрд╕рдХрд╛ рдирд╛рдо рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИ. рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЬрдЧрд╣ рдкрд░ рдореМрдЬреВрдж рдПрдХ рдХреЛрдбрдмреЗрд╕ рдХрд╛рдлрд╝реА рд╣реЛрддрд╛ рд╣реИ. рд╣рд╛рд▓рд╛рдВрдХрд┐, рдмрд╛рдж рдореЗрдВ рдЬрдм рдЖрдкрдХрд╛ рдХреЛрдбрдмреЗрд╕ рдмрдбрд╝рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рдЖрдкрдХреЛ рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдкрдбрд╝ рд╕рдХрддреА рд╣реИ.рд╕реАрдПрд▓рдЖрдИ рдореЗрдВ, рднрд╛рд╖рд╛ рд╕реЗ рдЬреБрдбрд╝реА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдпреЗ рд╡рд┐рдХрд▓реНрдк рдорд┐рд▓рддреЗ рд╣реИрдВ:
- JavaScript
- TypeScript
- Python
рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рд▓рд┐рдП, JavaScript рдпрд╛ Python рдЪреБрдиреЗрдВ. TypeScript рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, TypeScript рдХреА рдорджрдж рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрдирд╛ рд▓реЗрдЦ рдкрдврд╝реЗрдВ.
рд╕реАрдПрд▓рдЖрдИ рдХреА рдорджрдж рд╕реЗ, рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдЗрдВрд╕реНрдЯреЙрд▓ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ. рдЕрдЧрд░ рдЖрдкрдХреЛ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдХреЛ рдХрд┐рд╕реА рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рдореИрдиреЗрдЬ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ.
рдЗрди рдХрдорд╛рдВрдб рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдРрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛:
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/v2/https");
const {onDocumentCreated} = require("firebase-functions/v2/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 рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЙрдкрд▓рдмреНрдз рд╣реИ. рдпрд╣ Cloud Functions рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ Firebase рдХреЛ рдЗрдВрдЯрд┐рдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмреЗрд╣рддрд░реАрди рддрд░реАрдХрд╛ рд╣реИ.
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╢реБрд░реВ рдХрд░рдиреЗ рдкрд░, Firebase CLI рдЯреВрд▓, Firebase Admin SDK рдФрд░ Firebase SDK рдХреЛ Cloud Functions рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ-рдЖрдк рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рджреЗрддрд╛ рд╣реИ. рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╝реНрдпрд╛рджрд╛ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдореИрдиреЗрдЬ рдХрд░рдирд╛ рд▓реЗрдЦ рдкрдврд╝реЗрдВ.
"рдореИрд╕реЗрдЬ рдЬреЛрдбрд╝реЗрдВ" рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝рдирд╛
"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.")
"рдореИрд╕реЗрдЬ рдЬреЛрдбрд╝реЗрдВ" рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдПрдЪрдЯреАрдЯреАрдкреА рдПрдВрдбрдкреЙрдЗрдВрдЯ рд╣реИ. рдПрдВрдбрдкреЙрдЗрдВрдЯ рдкрд░ рдХрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА рдЕрдиреБрд░реЛрдз рдХреЗ рдирддреАрдЬреЗ рдХреЗ рддреМрд░ рдкрд░, рдЕрдиреБрд░реЛрдз рдФрд░ рдЬрд╡рд╛рдм рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЖрдкрдХреЗ рдкреНрд▓реИрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рдЕрдиреБрд░реЛрдз рд╣реИрдВрдбрд▓рд░ (onRequest()
рдпрд╛ on_request
) рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ.
рдПрдЪрдЯреАрдЯреАрдкреА рдлрд╝рдВрдХреНрд╢рди, рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╣реЛрддреЗ рд╣реИрдВ. рдпреЗ рдХреЙрд▓ рдХрд┐рдП рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреА рддрд░рд╣ рд╣реА рд╣реЛрддреЗ рд╣реИрдВ. рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдЬрд╡рд╛рдм рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рд┐рдП. рд╕рд╛рде рд╣реА, Cloud Firestore рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ рдХрд╛рдо рдХреЛ рдмрд╛рдж рдХреЗ рд▓рд┐рдП рд╢реЗрдбреНрдпреВрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП. "add message" рдПрдЪрдЯреАрдЯреАрдкреА рдлрд╝рдВрдХреНрд╢рди, рдПрдЪрдЯреАрдЯреАрдкреА рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХреЛ рдЯреЗрдХреНрд╕реНрдЯ рд╡реИрд▓реНрдпреВ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрд╕реЗ /messages/:documentId/original
рдкрд╛рде рдХреЗ рддрд╣рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбрд╛рд▓рддрд╛ рд╣реИ.
"make uppercase" рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝рдирд╛
"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}
тАФ"рдкреИрд░рд╛рдореАрдЯрд░" рдХреЛ рдШреЗрд░рддреЗ рд╣реИрдВ. рдпреЗ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рдореИрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдбреЗрдЯрд╛ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ. Cloud Firestore, рдирдП рдореИрд╕реЗрдЬ рдЬреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рдкрд░ рд╣рд░ рдмрд╛рд░ рдХреЙрд▓рдмреИрдХ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ.
Node.js рдореЗрдВ, рдЗрд╡реЗрдВрдЯ-рдбреНрд░рд┐рд╡рди рдлрд╝рдВрдХреНрд╢рди рдЬреИрд╕реЗ рдХрд┐ Cloud Firestore рдЗрд╡реЗрдВрдЯ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╣реЛрддреЗ рд╣реИрдВ. рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ null
, рдХреЛрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдпрд╛ Promise рдореЗрдВ рд╕реЗ рдХреЛрдИ рдПрдХ рд╡реИрд▓реНрдпреВ рджрд┐рдЦрд╛рдиреА рдЪрд╛рд╣рд┐рдП.
рдЕрдЧрд░ рдЖрдкрдиреЗ рдХреЛрдИ рд╡реИрд▓реНрдпреВ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╕рдордп рдЦрддреНрдо рд╣реЛ рдЬрд╛рдПрдЧрд╛. рдЗрд╕рд╕реЗ рдЧрдбрд╝рдмрдбрд╝реА рдХрд╛ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдФрд░ рдлрд┐рд░ рд╕реЗ рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛рдПрдЧреА. рд╕рд┐рдВрдХ, рдПрд╕рд┐рдВрдХ, рдФрд░ рдкреНрд░реЙрдорд┐рд╕ рджреЗрдЦреЗрдВ.
рдЕрдкрдиреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдПрдХреНрдЬрд╝реАрдХреНрдпреВрд╢рди рдХрд╛ рд╕рд┐рдореНрдпреБрд▓реЗрд╢рди рдХрд░рдирд╛
Firebase Local Emulator Suite рдХреА рдорджрдж рд╕реЗ, рдРрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ Firebase рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдбрд┐рдкреНрд▓реЙрдп рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЕрдкрдиреА рд▓реЛрдХрд▓ рдорд╢реАрди рдкрд░ рдмрдирд╛рдпрд╛ рдФрд░ рдЯреЗрд╕реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рд╣рдорд╛рд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХреЗ рджреМрд░рд╛рди, рд╕реНрдерд╛рдиреАрдп рддреМрд░ рдкрд░ рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдЬрд╝рд░реВрд░ рдХрд░реЗрдВ. рдЗрд╕рдХреА рдПрдХ рд╡рдЬрд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдХреЛрдбрд┐рдВрдЧ рдХреА рдЧрдбрд╝рдмрдбрд╝рд┐рдпреЛрдВ рдХрд╛ рдЬреЛрдЦрд┐рдо рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ. рдЗрди рдЧрдбрд╝рдмрдбрд╝рд┐рдпреЛрдВ рдХреА рд╡рдЬрд╣ рд╕реЗ, рдкреНрд░реЛрдбрдХреНрд╢рди рдПрдирд╡рд╛рдпрд░рдореЗрдВрдЯ рдореЗрдВ рд▓рд╛рдЧрдд рд▓рдЧ рд╕рдХрддреА рд╣реИ. рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрдирдлрд╝рд┐рдирд┐рдЯ рд▓реВрдк.
рдЕрдкрдиреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рд┐рдореНрдпреБрд▓реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
firebase emulators:start
рдЪрд▓рд╛рдПрдВ рдФрд░ Emulator Suite UI рдХреЗ рдпреВрдЖрд░рдПрд▓ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЦреЗрдВ. рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ localhost:4000 рдкрд░ рд╣реЛрддрд╛ рд╣реИ. рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕реЗ рдЖрдкрдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдХрд┐рд╕реА рджреВрд╕рд░реЗ рдкреЛрд░реНрдЯ рдкрд░ рд╣реЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. Emulator Suite UI рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрд╕ рдпреВрдЖрд░рдПрд▓ рдХреЛ рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдбрд╛рд▓реЗрдВ.рдПрдЪрдЯреАрдЯреАрдкреА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдпреВрдЖрд░рдПрд▓ рдХреЗ рд▓рд┐рдП,
firebase emulators:start
рдХрдорд╛рдВрдб рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЦреЗрдВ. рдпрд╣http://localhost:5001/MY_PROJECT/us-central1/addMessage
рдЬреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛. рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдореЗрдВ рдпреЗ рдЕрдВрддрд░ рд╣реЛрдВрдЧреЗ:MY_PROJECT
рдХреА рдЬрдЧрд╣ рдЖрдкрдХрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЖрдИрдбреА рджрд┐рдЦреЗрдЧрд╛.- рдЖрдкрдХреА рд▓реЛрдХрд▓ рдорд╢реАрди рдкрд░ рдкреЛрд░реНрдЯ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ.
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдпреВрдЖрд░рдПрд▓ рдХреЗ рдЖрдЦрд┐рд░ рдореЗрдВ рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ
?text=uppercaseme
рдЬреЛрдбрд╝реЗрдВ. рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:http://localhost:5001/MY_PROJECT/us-central1/addMessage?text=uppercaseme
. рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, "uppercaseme" рдореИрд╕реЗрдЬ рдХреЛ рдЕрдкрдиреА рдкрд╕рдВрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдореИрд╕реЗрдЬ рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ.рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдпреВрдЖрд░рдПрд▓ рдХреЛ рдирдП рдЯреИрдм рдореЗрдВ рдЦреЛрд▓рдХрд░, рдирдпрд╛ рдореИрд╕реЗрдЬ рдмрдирд╛рдПрдВ.
Emulator Suite UI рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрд╕рд░ рджреЗрдЦреЗрдВ:
рд▓реЙрдЧ рдЯреИрдм рдореЗрдВ, рдЖрдкрдХреЛ рдирдП рд▓реЙрдЧ рджрд┐рдЦреЗрдВрдЧреЗ. рдЗрдирд╕реЗ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдЖрдкрдХреЗ рдПрдЪрдЯреАрдЯреАрдкреА рдлрд╝рдВрдХреНрд╢рди рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ:
i functions: Beginning execution of "addMessage"
i functions: Beginning execution of "makeUppercase"
Firestore рдЯреИрдм рдореЗрдВ, рдЖрдкрдХреЛ рдПрдХ рдРрд╕рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджрд┐рдЦреЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХрд╛ рдУрд░рд┐рдЬрдирд▓ рдореИрд╕реЗрдЬ рдФрд░ рдореИрд╕реЗрдЬ рдХрд╛ рдЕрдкрд░рдХреЗрд╕ рд╡рд░реНрд╢рди рд╣реЛрдЧрд╛. рдЕрдЧрд░ рдЖрдкрдХрд╛ рдУрд░рд┐рдЬрдирд▓ рдореИрд╕реЗрдЬ "uppercaseme" рдерд╛, рддреЛ рдЖрдкрдХреЛ "UPPERCASEME" рджрд┐рдЦреЗрдЧрд╛.
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреНрд░реЛрдбрдХреНрд╢рди рдПрдирд╡рд╛рдпрд░рдореЗрдВрдЯ рдореЗрдВ рдбрд┐рдкреНрд▓реЙрдп рдХрд░рдирд╛
рдЬрдм рдЖрдкрдХреЗ рдлрд╝рдВрдХреНрд╢рди, рдПрдореНрдпреБрд▓реЗрдЯрд░ рдореЗрдВ рдЖрдкрдХреА рдЬрд╝рд░реВрд░рдд рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧреЗрдВ, рддрдм рдЙрдиреНрд╣реЗрдВ рдкреНрд░реЛрдбрдХреНрд╢рди рдПрдирд╡рд╛рдпрд░рдореЗрдВрдЯ рдореЗрдВ рдбрд┐рдкреНрд▓реЙрдп, рдЯреЗрд╕реНрдЯ, рдФрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдкреНрд░реЛрдбрдХреНрд╢рди рдореЗрдВ рдбрд┐рдкреНрд▓реЙрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ Blaze рдкреНрд░рд╛рдЗрд╕рд┐рдВрдЧ рдкреНрд▓рд╛рди рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП. Cloud Functions рдХреАрдордд рджреЗрдЦреЗрдВ.
рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреЗ рдлрд╝рдВрдХреНрд╢рди рдбрд┐рдкреНрд▓реЙрдп рдХрд░реЗрдВ. рдЗрд╕рдХреЗ рдмрд╛рдж, рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░реЗрдВ.
рдЕрдкрдиреЗ рдлрд╝рдВрдХреНрд╢рди рдбрд┐рдкреНрд▓реЙрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдВ:
firebase deploy --only functions
рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж, Firebase рд╕реАрдПрд▓рдЖрдИ, рдХрд┐рд╕реА рднреА рдПрдЪрдЯреАрдЯреАрдкреА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдпреВрдЖрд░рдПрд▓ рджрд┐рдЦрд╛рддрд╛ рд╣реИ. рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ, рдпрд╣рд╛рдВ рджреА рдЧрдИ рд▓рд╛рдЗрди рдХреА рддрд░рд╣ рдПрдХ рд▓рд╛рдЗрди рджрд┐рдЦреЗрдЧреА:
Function URL (addMessage): https://us-central1-MY_PROJECT.cloudfunctions.net/addMessage
рдпреВрдЖрд░рдПрд▓ рдореЗрдВ рдЖрдкрдХрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЖрдИрдбреА рдФрд░ HTTP рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХреНрд╖реЗрддреНрд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИ. рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдкрдХреЛ рдЕрднреА рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдкреНрд░реЛрдбрдХреНрд╢рди рдПрдЪрдЯреАрдЯреАрдкреА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП location рддрдп рдХрд░рдирд╛ рдЬрд╝рд░реВрд░реА рд╣реИ, рддрд╛рдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдХреА рд▓реЗрдЯреЗрдиреНрд╕реА рдХреЛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ.
рдЕрдЧрд░ рдЖрдкрдХреЛ рдРрдХреНрд╕реЗрд╕ рд╕реЗ рдЬреБрдбрд╝реА рдЧрдбрд╝рдмрдбрд╝рд┐рдпрд╛рдВ рдорд┐рд▓рддреА рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ "рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдРрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреА рдЬрд╛ рд╕рдХрддреА," рддреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдо рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ.
рд╕реАрдПрд▓рдЖрдИ рд╕реЗ рдорд┐рд▓реЗ рдпреВрдЖрд░рдПрд▓ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ, рдЯреЗрдХреНрд╕реНрдЯ рдХреНрд╡реЗрд░реА рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЙрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЦреЛрд▓реЗрдВ:
https://us-central1-MY_PROJECT.cloudfunctions.net/addMessage?text=uppercasemetoo
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдЙрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдЬрдЧрд╣ рдкрд░ рдореМрдЬреВрдж Firebase рдХрдВрд╕реЛрд▓ рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЯреЗрдХреНрд╕реНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗрд╡ рдХреА рдЧрдИ рд╣реИ. рдпрд╣ рд░рд╛рдЗрдЯ рдЗрд╡реЗрдВрдЯ, "make uppercase" рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ. рдпрд╣ рдлрд╝рдВрдХреНрд╢рди, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЕрдкрд░рдХреЗрд╕ рд╡рд░реНрд╢рди рд▓рд┐рдЦрддрд╛ рд╣реИ.
рдлрд╝рдВрдХреНрд╢рди рдбрд┐рдкреНрд▓реЙрдп рдФрд░ рдПрдХреНрдЬрд╝реАрдХреНрдпреВрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, Google Cloud рдХрдВрд╕реЛрд▓ рдореЗрдВ рд▓реЙрдЧ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ. рдЕрдЧрд░ рдЖрдкрдХреЛ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдпрд╛ рдкреНрд░реЛрдбрдХреНрд╢рди рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдорд┐рдЯрд╛рдиреЗ рд╣реИрдВ, рддреЛ Firebase CLI рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ.
рдкреНрд░реЛрдбрдХреНрд╢рди рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рдХреА рдкрд░рдлрд╝реЙрд░реНрдореЗрдВрд╕ рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рд╕рд╛рде рд╣реА, рдХрдо рд╕реЗ рдХрдо рдФрд░ рдЬрд╝реНрдпрд╛рджрд╛ рд╕реЗ рдЬрд╝реНрдпрд╛рджрд╛ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд╕реЗрдЯ рдХрд░рдХреЗ рд▓рд╛рдЧрдд рдХреЛ рдХрдВрдЯреНрд░реЛрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдЗрди рд░рдирдЯрд╛рдЗрдо рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╝реНрдпрд╛рджрд╛ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдХрдВрдЯреНрд░реЛрд▓ рдХрд░рдирд╛ рд▓реЗрдЦ рдкрдврд╝реЗрдВ.
рдЕрдЧрд▓реЗ рдЪрд░рдг
рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ, Cloud Functions рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдореИрдиреЗрдЬ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╝реНрдпрд╛рджрд╛ рдЬрд╛рдиреЗрдВ. рд╕рд╛рде рд╣реА, Cloud Functions рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдЗрд╡реЗрдВрдЯ рдЯрд╛рдЗрдк рдХреЛ рд╣реИрдВрдбрд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдЬрд╛рдиреЗрдВ.
Cloud Functions рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╝реНрдпрд╛рджрд╛ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- Cloud Functions рдХреЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝реЗрдВ.
- Cloud Functions рдХреЛрдбрд▓реИрдм рдЖрдЬрд╝рдорд╛рдПрдВ.
- GitHub рдкрд░ рдХреЛрдб рдХреЗ рд╕реИрдВрдкрд▓ рджреЗрдЦрдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЪрд▓рд╛рдирд╛