डेटा वापस लाया जा रहा है

GET अनुरोध के साथ रीडिंग डेटा

हम Firebase डेटाबेस से डेटा पढ़ सकते हैं. इसके लिए, हमें इसके यूआरएल एंडपॉइंट पर GET अनुरोध भेजना होगा. पिछले सेक्शन में दिए गए ब्लॉग के उदाहरण का इस्तेमाल करके, ब्लॉग पोस्ट का पूरा डेटा पढ़ते हैं:

curl 'https://docs-examples.firebaseio.com/fireblog/posts.json?print=pretty'

अनुरोध पूरा होने पर, 200 OK एचटीटीपी स्टेटस कोड दिखेगा. साथ ही, जवाब में वह डेटा शामिल होगा जिसे हम वापस पा रहे हैं.

यूआरआई पैरामीटर जोड़ना

REST API, Firebase डेटाबेस से डेटा पढ़ते समय कई क्वेरी पैरामीटर स्वीकार करता है. यहां सबसे ज़्यादा इस्तेमाल किए जाने वाले पैरामीटर दिए गए हैं. पूरी सूची देखने के लिए, REST API का रेफ़रंस देखें.

auth

auth अनुरोध पैरामीटर की मदद से, Firebase Realtime Database Security Rules से सुरक्षित डेटा को ऐक्सेस किया जा सकता है. साथ ही, यह सभी तरह के अनुरोधों के साथ काम करता है. आर्गुमेंट, आपके Firebase ऐप्लिकेशन का सीक्रेट या पुष्टि करने वाला टोकन हो सकता है. इसके बारे में Firebase प्रोजेक्ट में उपयोगकर्ता लेख में बताया गया है. यहां दिए गए उदाहरण में, हमने auth पैरामीटर के साथ GET अनुरोध भेजा है. इसमें CREDENTIAL, आपके Firebase ऐप्लिकेशन का सीक्रेट या पुष्टि करने वाला टोकन है:

curl 'https://docs-examples.firebaseio.com/auth-example.json?auth=CREDENTIAL'

प्रिंट करें

print=pretty तय करने पर, डेटा को ऐसे फ़ॉर्मैट में दिखाया जाता है जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है.

curl 'https://docs-examples.firebaseio.com/fireblog/posts.json?print=pretty'

print=silent को तय करने पर, ऑपरेशन के पूरा होने पर 204 No Content दिखता है.

curl 'https://docs-examples.firebaseio.com/fireblog/posts.json?print=silent'

कॉलबैक

अलग-अलग डोमेन के वेब ब्राउज़र से REST कॉल करने के लिए, JSONP का इस्तेमाल किया जा सकता है. इससे रिस्पॉन्स को JavaScript कॉलबैक फ़ंक्शन में रैप किया जा सकता है. callback= जोड़ें, ताकि REST API, दिखाए गए डेटा को आपके तय किए गए कॉलबैक फ़ंक्शन में रैप कर सके. उदाहरण के लिए:

<script>
  function gotData(data) {
    console.log(data);
  }
</script>
<script src="https://docs-examples.firebaseio.com/fireblog/posts.json?callback=gotData">

शैलो

यह एक ऐडवांस सुविधा है. इसे इस तरह से डिज़ाइन किया गया है कि इसकी मदद से, आपको पूरे डेटासेट को डाउनलोड किए बिना ही बड़े डेटासेट पर काम करने में मदद मिल सके. इसका इस्तेमाल करने के लिए, shallow=true को पैरामीटर के तौर पर जोड़ें. इससे, दिखाए गए डेटा की गहराई सीमित हो जाएगी. अगर किसी जगह पर मौजूद डेटा कोई JSON प्रिमिटिव (स्ट्रिंग, संख्या या बूलियन) है, तो उसकी वैल्यू को सीधे तौर पर दिखाया जाएगा. अगर जगह की जानकारी का डेटा स्नैपशॉट, JSON ऑब्जेक्ट है, तो हर कुंजी की वैल्यू को true पर छोटा कर दिया जाएगा. उदाहरण के लिए, यहां दिए गए डेटा का इस्तेमाल करके:

{
  "message": {
    "user": {
      "name": "Chris"
    },
    "body": "Hello!"
  }
}

// A request to /message.json?shallow=true
// would return the following:
{
  "user": true,
  "body": true
}

// A request to /message/body.json?shallow=true
// would simply return:
"Hello!"

इस curl अनुरोध के साथ इसे आज़माएं:

curl 'https://docs-examples.firebaseio.com/rest/retrieving-data.json?shallow=true&print=pretty'

टाइम आउट

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

timeouts को इस फ़ॉर्मैट में डालें: 3ms, 3s या 3min. साथ ही, इसमें कोई संख्या और यूनिट शामिल करें. अगर यह वैल्यू नहीं दी जाती है, तो 15min की ज़्यादा से ज़्यादा timeout वैल्यू लागू होगी. अगर timeout की वैल्यू पॉज़िटिव नहीं है या यह तय सीमा से ज़्यादा है, तो अनुरोध को अस्वीकार कर दिया जाएगा. साथ ही, एचटीटीपी 400 गड़बड़ी का मैसेज दिखेगा. यहां दिए गए उदाहरण में, GET अनुरोध में 10 सेकंड का timeout शामिल है.

curl 'https://docs-examples.firebaseio.com/rest/retrieving-data.json?timeout=10s'

डेटा फ़िल्टर करना

हम अलग-अलग फ़ैक्टर के आधार पर डेटा को फ़िल्टर करने के लिए क्वेरी बना सकते हैं. शुरू करने के लिए, orderBy पैरामीटर का इस्तेमाल करके यह तय करें कि आपको डेटा को कैसे फ़िल्टर करना है. इसके बाद, orderBy को इन पांच पैरामीटर में से किसी एक के साथ जोड़ें: limitToFirst, limitToLast, startAt, endAt, और equalTo.

Firebase की टीम को डायनासोर बहुत पसंद हैं. इसलिए, हम डायनासोर के बारे में जानकारी देने वाले सैंपल डेटाबेस के एक स्निपेट का इस्तेमाल करेंगे. इससे आपको यह समझने में मदद मिलेगी कि डेटा को कैसे फ़िल्टर किया जा सकता है:

{
  "lambeosaurus": {
    "height": 2.1,
    "length": 12.5,
    "weight": 5000
  },
  "stegosaurus": {
    "height": 4,
    "length": 9,
    "weight": 2500
  }
}

हम डेटा को तीन तरीकों से फ़िल्टर कर सकते हैं: चाइल्ड की के हिसाब से, की के हिसाब से या वैल्यू के हिसाब से. क्वेरी इनमें से किसी एक पैरामीटर से शुरू होती है. इसके बाद, इसे इनमें से एक या उससे ज़्यादा पैरामीटर के साथ जोड़ना ज़रूरी है: startAt, endAt, limitToFirst, limitToLast या equalTo.

किसी चाइल्ड कुंजी के हिसाब से फ़िल्टर करना

हम नोड को किसी सामान्य चाइल्ड की के हिसाब से फ़िल्टर कर सकते हैं. इसके लिए, उस की को orderBy पैरामीटर में पास करें. उदाहरण के लिए, तीन से ज़्यादा ऊंचाई वाले सभी डायनासोर को वापस पाने के लिए, हम यह तरीका अपना सकते हैं:

curl 'https://dinosaur-facts.firebaseio.com/dinosaurs.json?orderBy="height"&startAt=3&print=pretty'

जिस नोड में चाइल्ड की मौजूद नहीं है उसे null वैल्यू के साथ क्रम से लगाया जाएगा. डेटा को क्रम से लगाने के तरीके के बारे में जानने के लिए, डेटा को क्रम से कैसे लगाया जाता है लेख पढ़ें.

Firebase, सिर्फ़ एक लेवल नीचे मौजूद बच्चों के बजाय, डीपली नेस्ट किए गए बच्चों के हिसाब से क्रम से लगाई गई क्वेरी भी इस्तेमाल कर सकता है. यह तब काम आता है, जब आपके पास इस तरह का नेस्ट किया गया डेटा हो:

{
  "lambeosaurus": {
    "dimensions": {
      "height" : 2.1,
      "length" : 12.5,
      "weight": 5000
    }
  },
  "stegosaurus": {
    "dimensions": {
      "height" : 4,
      "length" : 9,
      "weight" : 2500
    }
  }
}

अब ऊंचाई के बारे में क्वेरी करने के लिए, हम एक कुंजी के बजाय ऑब्जेक्ट के पूरे पाथ का इस्तेमाल करते हैं:

curl 'https://dinosaur-facts.firebaseio.com/dinosaurs.json?orderBy="dimensions/height"&startAt=3&print=pretty'

क्वेरी में, एक बार में सिर्फ़ एक कुंजी के हिसाब से फ़िल्टर किया जा सकता है. एक ही अनुरोध में orderBy पैरामीटर का इस्तेमाल कई बार करने पर गड़बड़ी होती है.

कुंजी के हिसाब से फ़िल्टर करना

हम orderBy="$key" पैरामीटर का इस्तेमाल करके, नोड को उनकी कुंजियों के हिसाब से फ़िल्टर भी कर सकते हैं. यहां दिए गए उदाहरण में, a से m तक के अक्षरों से शुरू होने वाले सभी डायनासोर के नाम वापस पाए जाते हैं:

curl 'https://dinosaur-facts.firebaseio.com/dinosaurs.json?orderBy="$key"&startAt="a"&endAt="m"&print=pretty'

वैल्यू के हिसाब से फ़िल्टर करना

orderBy="$value" पैरामीटर का इस्तेमाल करके, नोड को उनकी चाइल्ड कुंजियों की वैल्यू के हिसाब से फ़िल्टर किया जा सकता है. मान लें कि डायनासोर के बीच खेल-कूद की प्रतियोगिता हो रही है और हम उनके स्कोर को इस फ़ॉर्मैट में ट्रैक कर रहे हैं:

{
  "scores": {
    "bruhathkayosaurus": 55,
    "lambeosaurus": 21,
    "linhenykus": 80,
    "pterodactyl": 93,
    "stegosaurus": 5,
    "triceratops": 22
  }
}

50 से ज़्यादा स्कोर वाले सभी डायनासोर को वापस पाने के लिए, हम यह अनुरोध कर सकते हैं:

curl 'https://dinosaur-facts.firebaseio.com/scores.json?orderBy="$value"&startAt=50&print=pretty'

orderBy="$value" का इस्तेमाल करते समय, null, बूलियन, स्ट्रिंग, और ऑब्जेक्ट वैल्यू को कैसे क्रम से लगाया जाता है, यह जानने के लिए डेटा को क्रम से लगाने का तरीका देखें.

मुश्किल फ़िल्टरिंग

ज़्यादा कॉम्प्लेक्स क्वेरी बनाने के लिए, कई पैरामीटर को एक साथ इस्तेमाल किया जा सकता है.

क्वेरी की संख्या सीमित करना

limitToFirst और limitToLast पैरामीटर का इस्तेमाल, बच्चों की ज़्यादा से ज़्यादा संख्या सेट करने के लिए किया जाता है. इससे यह तय किया जाता है कि कितने बच्चों का डेटा इकट्ठा किया जाना है. अगर हमने 100 की सीमा तय की है, तो हमें सिर्फ़ 100 ऐसे बच्चे मिलेंगे जो खोज के नतीजों से मेल खाते हों. अगर हमारे डेटाबेस में 100 से कम मैसेज सेव हैं, तो हमें हर बच्चे का मैसेज मिलेगा. हालांकि, अगर हमारे पास 100 से ज़्यादा मैसेज हैं, तो हमें सिर्फ़ 100 मैसेज का डेटा मिलेगा. अगर हम limitToFirst का इस्तेमाल कर रहे हैं, तो ये क्रम से लगाए गए पहले 100 मैसेज होंगे. वहीं, अगर हम limitToLast का इस्तेमाल कर रहे हैं, तो ये क्रम से लगाए गए आखिरी 100 मैसेज होंगे.

डायनासोर के बारे में जानकारी देने वाले डेटाबेस और orderBy का इस्तेमाल करके, हम सबसे भारी दो डायनासोर के बारे में पता लगा सकते हैं:

curl 'https://dinosaur-facts.firebaseio.com/dinosaurs.json?orderBy="weight"&limitToLast=2&print=pretty'

इसी तरह, limitToFirst का इस्तेमाल करके, सबसे छोटे दो डायनासोर के बारे में पता लगाया जा सकता है:

curl 'https://dinosaur-facts.firebaseio.com/dinosaurs.json?orderBy="height"&limitToFirst=2&print=pretty'

हम orderBy="$value" का इस्तेमाल करके, सीमा से जुड़ी क्वेरी भी कर सकते हैं. अगर हमें सबसे ज़्यादा स्कोर करने वाले तीन डाइनोसॉर खिलाड़ियों का लीडरबोर्ड बनाना है, तो हम यह तरीका अपना सकते हैं:

curl 'https://dinosaur-facts.firebaseio.com/scores.json?orderBy="$value"&limitToLast=3&print=pretty'

रेंज क्वेरी

startAt, endAt, और equalTo का इस्तेमाल करके, हम अपनी क्वेरी के लिए कोई भी शुरुआती और आखिरी पॉइंट चुन सकते हैं. उदाहरण के लिए, अगर हमें कम से कम तीन मीटर लंबे सभी डायनासोर ढूंढने हैं, तो हम orderBy और startAt को एक साथ इस्तेमाल कर सकते हैं:

curl 'https://dinosaur-facts.firebaseio.com/dinosaurs.json?orderBy="height"&startAt=3&print=pretty'

हम endAt का इस्तेमाल करके, उन सभी डायनासोर के नाम ढूंढ सकते हैं जिनके नाम, शब्दकोश के क्रम के हिसाब से Pterodactyl से पहले आते हैं:

curl 'https://dinosaur-facts.firebaseio.com/dinosaurs.json?orderBy="$key"&endAt="pterodactyl"&print=pretty'

हम अपनी क्वेरी के दोनों सिरों को सीमित करने के लिए, startAt और endAt को एक साथ इस्तेमाल कर सकते हैं. यहां दिए गए उदाहरण में, उन सभी डायनासोर को खोजा गया है जिनके नाम "b" अक्षर से शुरू होते हैं:

curl 'https://dinosaur-facts.firebaseio.com/dinosaurs.json?orderBy="$key"&startAt="b"&endAt="b\uf8ff"&print=pretty'

जब आपको अपने डेटा को पेज के हिसाब से बांटना हो, तब भी रेंज क्वेरी का इस्तेमाल किया जा सकता है.

जानकारी को एक जगह इकट्ठा किया जा रहा है

जटिल क्वेरी बनाने के लिए, इन सभी तकनीकों को एक साथ इस्तेमाल किया जा सकता है. उदाहरण के लिए, मान लें कि आपको उन सभी डायनासोर के नाम पता करने हैं जिनकी लंबाई, हमारे पसंदीदा डायनासोर यानी कि स्टेगोसॉरस की लंबाई से कम या उसके बराबर है:

MY_FAV_DINO_HEIGHT=`curl "https://dinosaur-facts.firebaseio.com/dinosaurs/stegosaurus/height.json"`
curl "https://dinosaur-facts.firebaseio.com/dinosaurs.json?orderBy=\"height\"&endAt=${MY_FAV_DINO_HEIGHT}&print=pretty"

डेटा को क्रम से कैसे लगाया जाता है

इस सेक्शन में बताया गया है कि फ़िल्टर करने के तीनों पैरामीटर का इस्तेमाल करने पर, आपके डेटा को किस क्रम में रखा जाता है.

orderBy

orderBy का इस्तेमाल किसी चाइल्ड की के नाम के साथ करने पर, उस चाइल्ड की के हिसाब से डेटा को इस तरह क्रम में लगाया जाएगा:

  1. जिन बच्चों के लिए, दी गई चाइल्ड की की null वैल्यू है उन्हें सबसे ऊपर दिखाया जाता है.
  2. इसके बाद, चाइल्ड की तय की गई कुंजी के लिए false वैल्यू वाले बच्चे दिखते हैं. अगर एक से ज़्यादा चाइल्ड में false वैल्यू है, तो उन्हें कुंजी के हिसाब से लेक्सिकोग्राफ़िक क्रम में लगाया जाता है.
  3. इसके बाद, चाइल्ड की तय की गई कुंजी के लिए true वैल्यू वाले बच्चे दिखते हैं. अगर एक से ज़्यादा चाइल्ड में true वैल्यू है, तो उन्हें कुंजी के हिसाब से लेक्सिकोग्राफ़िक क्रम में लगाया जाता है.
  4. इसके बाद, संख्या वाली वैल्यू वाले बच्चे आते हैं. इन्हें बढ़ते क्रम में लगाया जाता है. अगर एक से ज़्यादा चाइल्ड नोड के लिए, तय किए गए चाइल्ड नोड की संख्यात्मक वैल्यू एक जैसी है, तो उन्हें कुंजी के हिसाब से क्रम में लगाया जाता है.
  5. संख्याओं के बाद स्ट्रिंग आती हैं. इन्हें लेक्सिकोग्राफ़िक क्रम में बढ़ते क्रम में लगाया जाता है. अगर कई बच्चों के लिए, तय किए गए चाइल्ड नोड की वैल्यू एक जैसी है, तो उन्हें कुंजी के हिसाब से लेक्सिकोग्राफ़िक क्रम में लगाया जाता है.
  6. ऑब्जेक्ट आखिर में आते हैं और उन्हें कुंजी के हिसाब से, लेक्सिकोग्राफ़िक क्रम में बढ़ते क्रम में लगाया जाता है.
फ़िल्टर किए गए नतीजे, क्रम से नहीं दिखाए जाते. अगर आपके डेटा का क्रम ज़रूरी है, तो Firebase से नतीजे मिलने के बाद, आपको अपने ऐप्लिकेशन में उन्हें क्रम से लगाना चाहिए.

orderBy="$key"

अपने डेटा को क्रम से लगाने के लिए orderBy="$key" पैरामीटर का इस्तेमाल करने पर, डेटा को इस तरह से कुंजी के हिसाब से बढ़ते क्रम में दिखाया जाएगा. ध्यान रखें कि कुंजियां सिर्फ़ स्ट्रिंग हो सकती हैं.

  1. जिन बच्चों के पास ऐसी कुंजी होती है जिसे 32-बिट पूर्णांक के तौर पर पार्स किया जा सकता है उन्हें बढ़ते क्रम में सबसे पहले दिखाया जाता है.
  2. इसके बाद, वे बच्चे आते हैं जिनकी कुंजी के तौर पर स्ट्रिंग वैल्यू होती है. इन्हें लेक्सिकोग्राफ़िक तरीके से बढ़ते क्रम में लगाया जाता है.

orderBy="$value"

अपने डेटा को क्रम से लगाने के लिए orderBy="$value" पैरामीटर का इस्तेमाल करते समय, बच्चों को उनकी वैल्यू के हिसाब से क्रम में लगाया जाएगा. डेटा को क्रम से लगाने का तरीका, चाइल्ड की के हिसाब से क्रम से लगाए गए डेटा जैसा ही होता है. हालांकि, इसमें किसी चाइल्ड की की वैल्यू के बजाय नोड की वैल्यू का इस्तेमाल किया जाता है.

orderBy="$priority"

अपने डेटा को क्रम से लगाने के लिए orderBy="$priority" पैरामीटर का इस्तेमाल करते समय, बच्चों के क्रम को उनकी प्राथमिकता और कुंजी के हिसाब से तय किया जाता है. ध्यान रखें कि प्राथमिकता की वैल्यू सिर्फ़ संख्याएं या स्ट्रिंग हो सकती हैं.

  1. जिन बच्चों को प्राथमिकता नहीं दी गई है (डिफ़ॉल्ट रूप से), उन्हें सबसे पहले दिखाया जाता है.
  2. इसके बाद, उन बच्चों को प्राथमिकता दी जाती है जिनके लिए नंबर सबसे ज़्यादा ज़रूरी है. इन्हें प्राथमिकता के हिसाब से संख्या के क्रम में लगाया जाता है. यानी, कम से ज़्यादा.
  3. जिन बच्चों के लिए स्ट्रिंग सबसे ज़रूरी है उन्हें आखिर में रखा जाता है. इन्हें प्राथमिकता के हिसाब से लेक्सिकोग्राफ़िक क्रम में लगाया जाता है.
  4. जब दो बच्चों की प्राथमिकता एक जैसी होती है (इसमें कोई प्राथमिकता न होना भी शामिल है), तो उन्हें कुंजी के हिसाब से क्रम में लगाया जाता है. सबसे पहले संख्या वाली कुंजियां आती हैं (संख्या के हिसाब से क्रम से लगाई जाती हैं). इसके बाद, बाकी कुंजियां आती हैं (शब्दकोश के हिसाब से क्रम से लगाई जाती हैं).

प्राथमिकताओं के बारे में ज़्यादा जानकारी के लिए, एपीआई रेफ़रंस देखें.

REST API से स्ट्रीमिंग करना

Firebase REST एंडपॉइंट, EventSource / Server-Sent Events प्रोटोकॉल के साथ काम करते हैं. इससे, हमारे Firebase डेटाबेस में किसी एक जगह पर हुए बदलावों को स्ट्रीम करना आसान हो जाता है.

स्ट्रीमिंग शुरू करने के लिए, हमें ये काम करने होंगे:

  1. क्लाइंट के Accept हेडर को text/event-stream पर सेट करें
  2. एचटीटीपी रीडायरेक्ट का पालन करना, खास तौर पर एचटीटीपी स्टेटस कोड 307
  3. अगर Firebase डेटाबेस की जगह की जानकारी को पढ़ने के लिए अनुमति की ज़रूरत है, तो auth क्वेरी पैरामीटर शामिल करें

इसके बदले में, सर्वर अनुरोध किए गए यूआरएल पर डेटा की स्थिति में बदलाव होने पर, नाम वाले इवेंट भेजेगा. इन मैसेज का स्ट्रक्चर, EventSource प्रोटोकॉल के मुताबिक होता है:

event: event name
data: JSON encoded data payload

सर्वर, ये इवेंट भेज सकता है:

रखें JSON-कोड में बदला गया डेटा, दो कुंजियों वाला एक ऑब्जेक्ट होगा: पाथ और डेटा
पाथ, अनुरोध किए गए यूआरएल के हिसाब से किसी जगह की ओर इशारा करता है
क्लाइंट को अपनी कैश मेमोरी में मौजूद उस जगह के पूरे डेटा को, मैसेज में दिए गए डेटा से बदलना चाहिए
पैच JSON-कोड में बदला गया डेटा, दो कुंजियों वाला ऑब्जेक्ट होगा: पाथ और डेटा
पाथ, अनुरोध यूआरएल के हिसाब से किसी जगह की ओर इशारा करता है
डेटा में मौजूद हर कुंजी के लिए, क्लाइंट को अपनी कैश मेमोरी में मौजूद कुंजी को, मैसेज में मौजूद कुंजी के डेटा से बदलना चाहिए
कीप-अलाइव इस इवेंट का डेटा शून्य है. इसलिए, कुछ करने की ज़रूरत नहीं है
रद्द करें इस इवेंट का डेटा शून्य है
अगर Firebase Realtime Database Security Rules की वजह से, अनुरोध की गई जगह पर पढ़ने की अनुमति नहीं दी जाती है, तो यह इवेंट भेजा जाएगा
auth_revoked इस इवेंट का डेटा एक स्ट्रिंग है. इससे पता चलता है कि क्रेडेंशियल की समयसीमा खत्म हो गई है
यह इवेंट तब भेजा जाएगा, जब दिया गया auth पैरामीटर अब मान्य नहीं होगा

यहां इवेंट के उस सेट का उदाहरण दिया गया है जिसे सर्वर भेज सकता है:

// Set your entire cache to {"a": 1, "b": 2}
event: put
data: {"path": "/", "data": {"a": 1, "b": 2}}


// Put the new data in your cache under the key 'c', so that the complete cache now looks like:
// {"a": 1, "b": 2, "c": {"foo": true, "bar": false}}
event: put
data: {"path": "/c", "data": {"foo": true, "bar": false}}


// For each key in the data, update (or add) the corresponding key in your cache at path /c,
// for a final cache of: {"a": 1, "b": 2, "c": {"foo": 3, "bar": false, "baz": 4}}
event: patch
data: {"path": "/c", "data": {"foo": 3, "baz": 4}}

अगर Go का इस्तेमाल किया जा रहा है, तो Firego देखें. यह Firebase REST और स्ट्रीमिंग एपीआई के लिए, तीसरे पक्ष का रैपर है.