Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

क्लाउड फायरस्टोर ट्रिगर

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

क्लाउड फ़ंक्शंस के साथ, आप क्लाइंट कोड को अपडेट करने की आवश्यकता के बिना क्लाउड फायरस्टोर में ईवेंट को हैंडल कर सकते हैं। आप DocumentSnapshot इंटरफ़ेस या व्यवस्थापक SDK के माध्यम से Cloud Firestore परिवर्तन कर सकते हैं।

एक सामान्य जीवनचक्र में, क्लाउड फायरस्टोर फ़ंक्शन निम्न कार्य करता है:

  1. किसी विशेष दस्तावेज़ में परिवर्तन की प्रतीक्षा करता है।
  2. जब कोई घटना होती है तो ट्रिगर करता है और अपने कार्यों को करता है (देखें मैं क्लाउड फ़ंक्शंस के साथ क्या कर सकता हूं? उपयोग के मामलों के उदाहरणों के लिए)।
  3. एक डेटा ऑब्जेक्ट प्राप्त करता है जिसमें निर्दिष्ट दस्तावेज़ में संग्रहीत डेटा का स्नैपशॉट होता है। onWrite या onUpdate ईवेंट के लिए, डेटा ऑब्जेक्ट में दो स्नैपशॉट होते हैं जो ट्रिगरिंग ईवेंट से पहले और बाद में डेटा स्थिति का प्रतिनिधित्व करते हैं।

फायरस्टोर इंस्टेंस के स्थान और फ़ंक्शन के स्थान के बीच की दूरी महत्वपूर्ण नेटवर्क विलंबता पैदा कर सकती है। प्रदर्शन को अनुकूलित करने के लिए, जहां लागू हो वहां फ़ंक्शन स्थान निर्दिष्ट करने पर विचार करें।

क्लाउड फायरस्टोर फ़ंक्शन ट्रिगर

Firebase SDK के लिए क्लाउड फ़ंक्शंस एक functions.firestore ऑब्जेक्ट का निर्यात करता है जो आपको विशिष्ट Cloud Firestore ईवेंट से जुड़े हैंडलर बनाने की अनुमति देता है।

घटना प्रकार चालू कर देना
onCreate तब ट्रिगर होता है जब कोई दस्तावेज़ पहली बार लिखा जाता है।
onUpdate तब ट्रिगर होता है जब कोई दस्तावेज़ पहले से मौजूद होता है और उसका कोई मान बदल जाता है।
onDelete डेटा वाले दस्तावेज़ के हटाए जाने पर ट्रिगर होता है।
onWrite ट्रिगर तब होता है जब onCreate , onUpdate या onDelete ट्रिगर होता है।

अगर आपने अभी तक Firebase के लिए Cloud Functions के लिए कोई प्रोजेक्ट सक्षम नहीं किया है, तो Get Started: Firebase प्रोजेक्ट के लिए अपने Cloud Functions को कॉन्फ़िगर और सेट करने के लिए अपने पहले Functions को लिखें और परिनियोजित करें पढ़ें।

क्लाउड फायरस्टोर-ट्रिगर फ़ंक्शन लिखना

फ़ंक्शन ट्रिगर को परिभाषित करें

Cloud Firestore ट्रिगर को परिभाषित करने के लिए, एक दस्तावेज़ पथ और एक ईवेंट प्रकार निर्दिष्ट करें:

Node.js

const functions = require('firebase-functions');

exports.myFunction = functions.firestore
  .document('my-collection/{docId}')
  .onWrite((change, context) => { /* ... */ });

दस्तावेज़ पथ किसी विशिष्ट दस्तावेज़ या वाइल्डकार्ड पैटर्न को संदर्भित कर सकते हैं।

एकल दस्तावेज़ निर्दिष्ट करें

यदि आप किसी विशिष्ट दस्तावेज़ में किसी परिवर्तन के लिए किसी ईवेंट को ट्रिगर करना चाहते हैं तो आप निम्न फ़ंक्शन का उपयोग कर सकते हैं।

Node.js

// Listen for any change on document `marie` in collection `users`
exports.myFunctionName = functions.firestore
    .document('users/marie').onWrite((change, context) => {
      // ... Your code here
    });

वाइल्डकार्ड का उपयोग करके दस्तावेज़ों का एक समूह निर्दिष्ट करें

यदि आप दस्तावेज़ों के समूह में ट्रिगर संलग्न करना चाहते हैं, जैसे किसी निश्चित संग्रह में कोई दस्तावेज़, तो दस्तावेज़ आईडी के स्थान पर {wildcard} का उपयोग करें:

Node.js

// Listen for changes in all documents in the 'users' collection
exports.useWildcard = functions.firestore
    .document('users/{userId}')
    .onWrite((change, context) => {
      // If we set `/users/marie` to {name: "Marie"} then
      // context.params.userId == "marie"
      // ... and ...
      // change.after.data() == {name: "Marie"}
    });

इस उदाहरण में, जब users में किसी दस्तावेज़ पर कोई फ़ील्ड बदली जाती है, तो यह userId नामक वाइल्डकार्ड से मेल खाती है।

यदि users में किसी दस्तावेज़ में उप-संग्रह हैं, और उन उप-संग्रहों में से किसी एक दस्तावेज़ में कोई फ़ील्ड बदल दिया गया है, तो userId वाइल्डकार्ड ट्रिगर नहीं होता है।

वाइल्डकार्ड मिलान दस्तावेज़ पथ से निकाले जाते हैं और context.params में संग्रहीत किए जाते हैं। आप स्पष्ट संग्रह या दस्तावेज़ आईडी को प्रतिस्थापित करने के लिए जितने चाहें उतने वाइल्डकार्ड परिभाषित कर सकते हैं, उदाहरण के लिए:

Node.js

// Listen for changes in all documents in the 'users' collection and all subcollections
exports.useMultipleWildcards = functions.firestore
    .document('users/{userId}/{messageCollectionId}/{messageId}')
    .onWrite((change, context) => {
      // If we set `/users/marie/incoming_messages/134` to {body: "Hello"} then
      // context.params.userId == "marie";
      // context.params.messageCollectionId == "incoming_messages";
      // context.params.messageId == "134";
      // ... and ...
      // change.after.data() == {body: "Hello"}
    });

घटना ट्रिगर

एक नया दस्तावेज़ बनाते समय फ़ंक्शन को ट्रिगर करें

वाइल्डकार्ड के साथ onCreate() हैंडलर का उपयोग करके किसी संग्रह में कोई नया दस्तावेज़ बनाए जाने पर आप किसी फ़ंक्शन को सक्रिय करने के लिए ट्रिगर कर सकते हैं। यह उदाहरण फ़ंक्शन हर बार एक नया उपयोगकर्ता प्रोफ़ाइल जोड़े जाने पर createUser को कॉल करता है:

Node.js

exports.createUser = functions.firestore
    .document('users/{userId}')
    .onCreate((snap, context) => {
      // Get an object representing the document
      // e.g. {'name': 'Marie', 'age': 66}
      const newValue = snap.data();

      // access a particular field as you would any JS property
      const name = newValue.name;

      // perform desired operations ...
    });

दस्तावेज़ अपडेट होने पर फ़ंक्शन ट्रिगर करें

जब वाइल्डकार्ड के साथ onUpdate() फ़ंक्शन का उपयोग करके दस्तावेज़ को अपडेट किया जाता है, तो आप किसी फ़ंक्शन को सक्रिय करने के लिए ट्रिगर भी कर सकते हैं। यदि कोई उपयोगकर्ता अपनी प्रोफ़ाइल बदलता है तो यह उदाहरण फ़ंक्शन updateUser को कॉल करता है:

Node.js

exports.updateUser = functions.firestore
    .document('users/{userId}')
    .onUpdate((change, context) => {
      // Get an object representing the document
      // e.g. {'name': 'Marie', 'age': 66}
      const newValue = change.after.data();

      // ...or the previous value before this update
      const previousValue = change.before.data();

      // access a particular field as you would any JS property
      const name = newValue.name;

      // perform desired operations ...
    });

किसी दस्तावेज़ को हटाए जाने पर फ़ंक्शन को ट्रिगर करें

वाइल्डकार्ड के साथ onDelete() फ़ंक्शन का उपयोग करके दस्तावेज़ को हटाए जाने पर आप फ़ंक्शन को भी ट्रिगर कर सकते हैं। जब कोई उपयोगकर्ता अपनी उपयोगकर्ता प्रोफ़ाइल हटाता है तो यह उदाहरण फ़ंक्शन deleteUser को कॉल करता है:

Node.js

exports.deleteUser = functions.firestore
    .document('users/{userID}')
    .onDelete((snap, context) => {
      // Get an object representing the document prior to deletion
      // e.g. {'name': 'Marie', 'age': 66}
      const deletedValue = snap.data();

      // perform desired operations ...
    });

किसी दस्तावेज़ में सभी परिवर्तनों के लिए फ़ंक्शन ट्रिगर करें

यदि आपको इस बात की परवाह नहीं है कि किस प्रकार की घटना को निकाल दिया जा रहा है, तो आप वाइल्डकार्ड के साथ onWrite() फ़ंक्शन का उपयोग करके क्लाउड फायरस्टोर दस्तावेज़ में सभी परिवर्तनों को सुन सकते हैं। यदि कोई उपयोगकर्ता बनाया, अपडेट किया गया या हटाया गया है, तो यह उदाहरण फ़ंक्शन modifyUser को कॉल करता है:

Node.js

exports.modifyUser = functions.firestore
    .document('users/{userID}')
    .onWrite((change, context) => {
      // Get an object with the current document value.
      // If the document does not exist, it has been deleted.
      const document = change.after.exists ? change.after.data() : null;

      // Get an object with the previous document value (for update or delete)
      const oldDocument = change.before.data();

      // perform desired operations ...
    });

डेटा पढ़ना और लिखना

जब कोई फ़ंक्शन ट्रिगर होता है, तो यह ईवेंट से संबंधित डेटा का एक स्नैपशॉट प्रदान करता है। आप इस स्नैपशॉट का उपयोग उस दस्तावेज़ को पढ़ने या लिखने के लिए कर सकते हैं जिसने ईवेंट को ट्रिगर किया, या अपने डेटाबेस के अन्य भागों तक पहुँचने के लिए Firebase व्यवस्थापक SDK का उपयोग कर सकते हैं।

घटना डेटा

डेटा पढ़ना

जब कोई फ़ंक्शन ट्रिगर होता है, तो हो सकता है कि आप अपडेट किए गए दस्तावेज़ से डेटा प्राप्त करना चाहें, या अपडेट से पहले डेटा प्राप्त करना चाहें। आप change.before.data() का उपयोग करके पूर्व डेटा प्राप्त कर सकते हैं, जिसमें अद्यतन से पहले दस्तावेज़ स्नैपशॉट होता है। इसी तरह, change.after.data() में अद्यतन के बाद दस्तावेज़ स्नैपशॉट स्थिति होती है।

Node.js

exports.updateUser2 = functions.firestore
    .document('users/{userId}')
    .onUpdate((change, context) => {
      // Get an object representing the current document
      const newValue = change.after.data();

      // ...or the previous value before this update
      const previousValue = change.before.data();
    });

आप गुणों तक पहुँच सकते हैं जैसा कि आप किसी अन्य वस्तु में करते हैं। वैकल्पिक रूप से, आप विशिष्ट क्षेत्रों तक पहुँचने के लिए get फ़ंक्शन का उपयोग कर सकते हैं:

Node.js

// Fetch data using standard accessors
const age = snap.data().age;
const name = snap.data()['name'];

// Fetch data using built in accessor
const experience = snap.get('experience');

डेटा लिखना

प्रत्येक फ़ंक्शन आमंत्रण आपके क्लाउड फायरस्टोर डेटाबेस में एक विशिष्ट दस्तावेज़ से जुड़ा होता है। आप उस दस्तावेज़ को अपने फ़ंक्शन पर लौटाए गए स्नैपशॉट की ref प्रॉपर्टी में DocumentReference संदर्भ के रूप में एक्सेस कर सकते हैं।

यह DocumentReference Cloud Firestore Node.js SDK से आता है और इसमें update() , set() , और remove() जैसी विधियां शामिल हैं ताकि आप फ़ंक्शन को ट्रिगर करने वाले दस्तावेज़ को आसानी से संशोधित कर सकें।

Node.js

// Listen for updates to any `user` document.
exports.countNameChanges = functions.firestore
    .document('users/{userId}')
    .onUpdate((change, context) => {
      // Retrieve the current and previous value
      const data = change.after.data();
      const previousData = change.before.data();

      // We'll only update if the name has changed.
      // This is crucial to prevent infinite loops.
      if (data.name == previousData.name) {
        return null;
      }

      // Retrieve the current count of name changes
      let count = data.name_change_count;
      if (!count) {
        count = 0;
      }

      // Then return a promise of a set operation to update the count
      return change.after.ref.set({
        name_change_count: count + 1
      }, {merge: true});
    });

ट्रिगर इवेंट के बाहर का डेटा

क्लाउड फ़ंक्शंस एक विश्वसनीय वातावरण में निष्पादित होते हैं, जिसका अर्थ है कि वे आपके प्रोजेक्ट पर एक सेवा खाते के रूप में अधिकृत हैं। आप Firebase Admin SDK का उपयोग करके पढ़ना और लिखना कर सकते हैं:

Node.js

const admin = require('firebase-admin');
admin.initializeApp();

const db = admin.firestore();

exports.writeToFirestore = functions.firestore
  .document('some/doc')
  .onWrite((change, context) => {
    db.doc('some/otherdoc').set({ ... });
  });

सीमाओं

क्लाउड फ़ंक्शंस के लिए क्लाउड फायरस्टोर ट्रिगर्स के लिए निम्नलिखित सीमाओं पर ध्यान दें:

  • आदेश देने की गारंटी नहीं है। तीव्र परिवर्तन एक अप्रत्याशित क्रम में फ़ंक्शन आमंत्रण को ट्रिगर कर सकते हैं।
  • ईवेंट कम से कम एक बार डिलीवर किए जाते हैं, लेकिन एक ईवेंट के परिणामस्वरूप कई फ़ंक्शन इनवोकेशन हो सकते हैं। बिल्कुल-एक बार यांत्रिकी पर निर्भर रहने से बचें, और बेकार कार्यों को लिखें।
  • क्लाउड फ़ंक्शंस के लिए क्लाउड फायरस्टोर ट्रिगर केवल नेटिव मोड में क्लाउड फायरस्टोर के लिए उपलब्ध है। यह डेटास्टोर मोड में क्लाउड फायरस्टोर के लिए उपलब्ध नहीं है।
,

क्लाउड फ़ंक्शंस के साथ, आप क्लाइंट कोड को अपडेट करने की आवश्यकता के बिना क्लाउड फायरस्टोर में ईवेंट को हैंडल कर सकते हैं। आप DocumentSnapshot इंटरफ़ेस या व्यवस्थापक SDK के माध्यम से Cloud Firestore परिवर्तन कर सकते हैं।

एक सामान्य जीवनचक्र में, क्लाउड फायरस्टोर फ़ंक्शन निम्न कार्य करता है:

  1. किसी विशेष दस्तावेज़ में परिवर्तन की प्रतीक्षा करता है।
  2. जब कोई घटना होती है तो ट्रिगर करता है और अपने कार्यों को करता है (देखें मैं क्लाउड फ़ंक्शंस के साथ क्या कर सकता हूं? उपयोग के मामलों के उदाहरणों के लिए)।
  3. एक डेटा ऑब्जेक्ट प्राप्त करता है जिसमें निर्दिष्ट दस्तावेज़ में संग्रहीत डेटा का स्नैपशॉट होता है। onWrite या onUpdate ईवेंट के लिए, डेटा ऑब्जेक्ट में दो स्नैपशॉट होते हैं जो ट्रिगरिंग ईवेंट से पहले और बाद में डेटा स्थिति का प्रतिनिधित्व करते हैं।

फायरस्टोर इंस्टेंस के स्थान और फ़ंक्शन के स्थान के बीच की दूरी महत्वपूर्ण नेटवर्क विलंबता पैदा कर सकती है। प्रदर्शन को अनुकूलित करने के लिए, जहां लागू हो वहां फ़ंक्शन स्थान निर्दिष्ट करने पर विचार करें।

क्लाउड फायरस्टोर फ़ंक्शन ट्रिगर

Firebase SDK के लिए क्लाउड फ़ंक्शंस एक functions.firestore ऑब्जेक्ट का निर्यात करता है जो आपको विशिष्ट Cloud Firestore ईवेंट से जुड़े हैंडलर बनाने की अनुमति देता है।

घटना प्रकार चालू कर देना
onCreate तब ट्रिगर होता है जब कोई दस्तावेज़ पहली बार लिखा जाता है।
onUpdate तब ट्रिगर होता है जब कोई दस्तावेज़ पहले से मौजूद होता है और उसका कोई मान बदल जाता है।
onDelete डेटा वाले दस्तावेज़ के हटाए जाने पर ट्रिगर होता है।
onWrite ट्रिगर तब होता है जब onCreate , onUpdate या onDelete ट्रिगर होता है।

अगर आपने अभी तक Firebase के लिए Cloud Functions के लिए कोई प्रोजेक्ट सक्षम नहीं किया है, तो Get Started: Firebase प्रोजेक्ट के लिए अपने Cloud Functions को कॉन्फ़िगर और सेट करने के लिए अपने पहले Functions को लिखें और परिनियोजित करें पढ़ें।

क्लाउड फायरस्टोर-ट्रिगर फ़ंक्शन लिखना

फ़ंक्शन ट्रिगर को परिभाषित करें

Cloud Firestore ट्रिगर को परिभाषित करने के लिए, एक दस्तावेज़ पथ और एक ईवेंट प्रकार निर्दिष्ट करें:

Node.js

const functions = require('firebase-functions');

exports.myFunction = functions.firestore
  .document('my-collection/{docId}')
  .onWrite((change, context) => { /* ... */ });

दस्तावेज़ पथ किसी विशिष्ट दस्तावेज़ या वाइल्डकार्ड पैटर्न को संदर्भित कर सकते हैं।

एकल दस्तावेज़ निर्दिष्ट करें

यदि आप किसी विशिष्ट दस्तावेज़ में किसी परिवर्तन के लिए किसी ईवेंट को ट्रिगर करना चाहते हैं तो आप निम्न फ़ंक्शन का उपयोग कर सकते हैं।

Node.js

// Listen for any change on document `marie` in collection `users`
exports.myFunctionName = functions.firestore
    .document('users/marie').onWrite((change, context) => {
      // ... Your code here
    });

वाइल्डकार्ड का उपयोग करके दस्तावेज़ों का एक समूह निर्दिष्ट करें

यदि आप दस्तावेज़ों के समूह में ट्रिगर संलग्न करना चाहते हैं, जैसे किसी निश्चित संग्रह में कोई दस्तावेज़, तो दस्तावेज़ आईडी के स्थान पर {wildcard} का उपयोग करें:

Node.js

// Listen for changes in all documents in the 'users' collection
exports.useWildcard = functions.firestore
    .document('users/{userId}')
    .onWrite((change, context) => {
      // If we set `/users/marie` to {name: "Marie"} then
      // context.params.userId == "marie"
      // ... and ...
      // change.after.data() == {name: "Marie"}
    });

इस उदाहरण में, जब users में किसी दस्तावेज़ पर कोई फ़ील्ड बदली जाती है, तो यह userId नामक वाइल्डकार्ड से मेल खाती है।

यदि users में किसी दस्तावेज़ में उप-संग्रह हैं, और उन उप-संग्रहों में से किसी एक दस्तावेज़ में कोई फ़ील्ड बदल दिया गया है, तो userId वाइल्डकार्ड ट्रिगर नहीं होता है।

वाइल्डकार्ड मिलान दस्तावेज़ पथ से निकाले जाते हैं और context.params में संग्रहीत किए जाते हैं। आप स्पष्ट संग्रह या दस्तावेज़ आईडी को प्रतिस्थापित करने के लिए जितने चाहें उतने वाइल्डकार्ड परिभाषित कर सकते हैं, उदाहरण के लिए:

Node.js

// Listen for changes in all documents in the 'users' collection and all subcollections
exports.useMultipleWildcards = functions.firestore
    .document('users/{userId}/{messageCollectionId}/{messageId}')
    .onWrite((change, context) => {
      // If we set `/users/marie/incoming_messages/134` to {body: "Hello"} then
      // context.params.userId == "marie";
      // context.params.messageCollectionId == "incoming_messages";
      // context.params.messageId == "134";
      // ... and ...
      // change.after.data() == {body: "Hello"}
    });

घटना ट्रिगर

एक नया दस्तावेज़ बनाते समय फ़ंक्शन को ट्रिगर करें

वाइल्डकार्ड के साथ onCreate() हैंडलर का उपयोग करके किसी संग्रह में कोई नया दस्तावेज़ बनाए जाने पर आप किसी फ़ंक्शन को सक्रिय करने के लिए ट्रिगर कर सकते हैं। यह उदाहरण फ़ंक्शन हर बार एक नया उपयोगकर्ता प्रोफ़ाइल जोड़े जाने पर createUser को कॉल करता है:

Node.js

exports.createUser = functions.firestore
    .document('users/{userId}')
    .onCreate((snap, context) => {
      // Get an object representing the document
      // e.g. {'name': 'Marie', 'age': 66}
      const newValue = snap.data();

      // access a particular field as you would any JS property
      const name = newValue.name;

      // perform desired operations ...
    });

दस्तावेज़ अपडेट होने पर फ़ंक्शन ट्रिगर करें

जब वाइल्डकार्ड के साथ onUpdate() फ़ंक्शन का उपयोग करके दस्तावेज़ को अपडेट किया जाता है, तो आप किसी फ़ंक्शन को सक्रिय करने के लिए ट्रिगर भी कर सकते हैं। यदि कोई उपयोगकर्ता अपनी प्रोफ़ाइल बदलता है तो यह उदाहरण फ़ंक्शन updateUser को कॉल करता है:

Node.js

exports.updateUser = functions.firestore
    .document('users/{userId}')
    .onUpdate((change, context) => {
      // Get an object representing the document
      // e.g. {'name': 'Marie', 'age': 66}
      const newValue = change.after.data();

      // ...or the previous value before this update
      const previousValue = change.before.data();

      // access a particular field as you would any JS property
      const name = newValue.name;

      // perform desired operations ...
    });

किसी दस्तावेज़ को हटाए जाने पर फ़ंक्शन को ट्रिगर करें

वाइल्डकार्ड के साथ onDelete() फ़ंक्शन का उपयोग करके दस्तावेज़ को हटाए जाने पर आप फ़ंक्शन को भी ट्रिगर कर सकते हैं। जब कोई उपयोगकर्ता अपनी उपयोगकर्ता प्रोफ़ाइल हटाता है तो यह उदाहरण फ़ंक्शन deleteUser को कॉल करता है:

Node.js

exports.deleteUser = functions.firestore
    .document('users/{userID}')
    .onDelete((snap, context) => {
      // Get an object representing the document prior to deletion
      // e.g. {'name': 'Marie', 'age': 66}
      const deletedValue = snap.data();

      // perform desired operations ...
    });

किसी दस्तावेज़ में सभी परिवर्तनों के लिए फ़ंक्शन ट्रिगर करें

यदि आपको इस बात की परवाह नहीं है कि किस प्रकार की घटना को निकाल दिया जा रहा है, तो आप वाइल्डकार्ड के साथ onWrite() फ़ंक्शन का उपयोग करके क्लाउड फायरस्टोर दस्तावेज़ में सभी परिवर्तनों को सुन सकते हैं। यदि कोई उपयोगकर्ता बनाया, अपडेट किया गया या हटाया गया है, तो यह उदाहरण फ़ंक्शन modifyUser को कॉल करता है:

Node.js

exports.modifyUser = functions.firestore
    .document('users/{userID}')
    .onWrite((change, context) => {
      // Get an object with the current document value.
      // If the document does not exist, it has been deleted.
      const document = change.after.exists ? change.after.data() : null;

      // Get an object with the previous document value (for update or delete)
      const oldDocument = change.before.data();

      // perform desired operations ...
    });

डेटा पढ़ना और लिखना

जब कोई फ़ंक्शन ट्रिगर होता है, तो यह ईवेंट से संबंधित डेटा का एक स्नैपशॉट प्रदान करता है। आप इस स्नैपशॉट का उपयोग उस दस्तावेज़ को पढ़ने या लिखने के लिए कर सकते हैं जिसने ईवेंट को ट्रिगर किया, या अपने डेटाबेस के अन्य भागों तक पहुँचने के लिए Firebase व्यवस्थापक SDK का उपयोग कर सकते हैं।

घटना डेटा

डेटा पढ़ना

जब कोई फ़ंक्शन ट्रिगर होता है, तो हो सकता है कि आप अपडेट किए गए दस्तावेज़ से डेटा प्राप्त करना चाहें, या अपडेट से पहले डेटा प्राप्त करना चाहें। आप change.before.data() का उपयोग करके पूर्व डेटा प्राप्त कर सकते हैं, जिसमें अद्यतन से पहले दस्तावेज़ स्नैपशॉट होता है। इसी तरह, change.after.data() में अद्यतन के बाद दस्तावेज़ स्नैपशॉट स्थिति होती है।

Node.js

exports.updateUser2 = functions.firestore
    .document('users/{userId}')
    .onUpdate((change, context) => {
      // Get an object representing the current document
      const newValue = change.after.data();

      // ...or the previous value before this update
      const previousValue = change.before.data();
    });

आप गुणों तक पहुँच सकते हैं जैसा कि आप किसी अन्य वस्तु में करते हैं। वैकल्पिक रूप से, आप विशिष्ट क्षेत्रों तक पहुँचने के लिए get फ़ंक्शन का उपयोग कर सकते हैं:

Node.js

// Fetch data using standard accessors
const age = snap.data().age;
const name = snap.data()['name'];

// Fetch data using built in accessor
const experience = snap.get('experience');

डेटा लिखना

प्रत्येक फ़ंक्शन आमंत्रण आपके क्लाउड फायरस्टोर डेटाबेस में एक विशिष्ट दस्तावेज़ से जुड़ा होता है। आप उस दस्तावेज़ को अपने फ़ंक्शन पर लौटाए गए स्नैपशॉट की ref प्रॉपर्टी में DocumentReference संदर्भ के रूप में एक्सेस कर सकते हैं।

यह DocumentReference Cloud Firestore Node.js SDK से आता है और इसमें update() , set() , और remove() जैसी विधियां शामिल हैं ताकि आप फ़ंक्शन को ट्रिगर करने वाले दस्तावेज़ को आसानी से संशोधित कर सकें।

Node.js

// Listen for updates to any `user` document.
exports.countNameChanges = functions.firestore
    .document('users/{userId}')
    .onUpdate((change, context) => {
      // Retrieve the current and previous value
      const data = change.after.data();
      const previousData = change.before.data();

      // We'll only update if the name has changed.
      // This is crucial to prevent infinite loops.
      if (data.name == previousData.name) {
        return null;
      }

      // Retrieve the current count of name changes
      let count = data.name_change_count;
      if (!count) {
        count = 0;
      }

      // Then return a promise of a set operation to update the count
      return change.after.ref.set({
        name_change_count: count + 1
      }, {merge: true});
    });

ट्रिगर इवेंट के बाहर का डेटा

क्लाउड फ़ंक्शंस एक विश्वसनीय वातावरण में निष्पादित होते हैं, जिसका अर्थ है कि वे आपके प्रोजेक्ट पर एक सेवा खाते के रूप में अधिकृत हैं। आप Firebase Admin SDK का उपयोग करके पढ़ना और लिखना कर सकते हैं:

Node.js

const admin = require('firebase-admin');
admin.initializeApp();

const db = admin.firestore();

exports.writeToFirestore = functions.firestore
  .document('some/doc')
  .onWrite((change, context) => {
    db.doc('some/otherdoc').set({ ... });
  });

सीमाओं

क्लाउड फ़ंक्शंस के लिए क्लाउड फायरस्टोर ट्रिगर्स के लिए निम्नलिखित सीमाओं पर ध्यान दें:

  • आदेश देने की गारंटी नहीं है। तीव्र परिवर्तन एक अप्रत्याशित क्रम में फ़ंक्शन आमंत्रण को ट्रिगर कर सकते हैं।
  • ईवेंट कम से कम एक बार डिलीवर किए जाते हैं, लेकिन एक ईवेंट के परिणामस्वरूप कई फ़ंक्शन इनवोकेशन हो सकते हैं। बिल्कुल-एक बार यांत्रिकी पर निर्भर रहने से बचें, और बेकार कार्यों को लिखें।
  • क्लाउड फ़ंक्शंस के लिए क्लाउड फायरस्टोर ट्रिगर केवल नेटिव मोड में क्लाउड फायरस्टोर के लिए उपलब्ध है। यह डेटास्टोर मोड में क्लाउड फायरस्टोर के लिए उपलब्ध नहीं है।