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

GET की मदद से डेटा पढ़ना

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

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

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

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

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

पुष्टिकरण

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 कॉलबैक फ़ंक्शन में जवाब को रैप किया जा सकता है. REST API से मिले डेटा को आपके बताए गए कॉलबैक फ़ंक्शन में रैप करने के लिए, callback= जोड़ें. उदाहरण के लिए:

<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 / सर्वर से भेजे गए इवेंट प्रोटोकॉल के साथ काम करते हैं. इससे, हमारे 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 इस इवेंट का डेटा एक स्ट्रिंग है. इससे पता चलता है कि क्रेडेंशियल की समयसीमा खत्म हो गई है
यह इवेंट तब भेजा जाएगा, जब दिया गया ऑथराइज़ेशन पैरामीटर अब मान्य नहीं होगा

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

// 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 और स्ट्रीमिंग एपीआई के लिए, तीसरे पक्ष का रैपर है.