তথ্য উদ্ধার করা হচ্ছে

GET ব্যবহার করে ডেটা পড়া

আমরা আমাদের ফায়ারবেস ডাটাবেসের URL এন্ডপয়েন্টে একটি GET অনুরোধ জারি করে ডেটা পড়তে পারি। আসুন পূর্ববর্তী বিভাগ থেকে আমাদের ব্লগ উদাহরণটি দিয়ে এগিয়ে যাই এবং আমাদের সমস্ত ব্লগ পোস্ট ডেটা পড়ি:

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

একটি সফল অনুরোধ 200 OK HTTP স্ট্যাটাস কোড দ্বারা নির্দেশিত হবে এবং প্রতিক্রিয়ায় আমরা যে ডেটা পুনরুদ্ধার করছি তা থাকবে।

URI প্যারামিটার যোগ করা হচ্ছে

আমাদের Firebase ডাটাবেস থেকে ডেটা পড়ার সময় REST API বেশ কয়েকটি কোয়েরি প্যারামিটার গ্রহণ করে। নীচে সর্বাধিক ব্যবহৃত প্যারামিটারগুলি তালিকাভুক্ত করা হয়েছে। সম্পূর্ণ তালিকার জন্য, REST API রেফারেন্স দেখুন।

প্রমাণীকরণ

auth অনুরোধ প্যারামিটারটি Firebase Realtime Database Security Rules দ্বারা সুরক্ষিত ডেটা অ্যাক্সেসের অনুমতি দেয় এবং সকল ধরণের অনুরোধ দ্বারা সমর্থিত। আর্গুমেন্টটি আপনার Firebase অ্যাপের গোপনীয়তা অথবা একটি প্রমাণীকরণ টোকেন হতে পারে, যেমনটি Firebase Projects-এ বর্ণিত হয়েছে। নিম্নলিখিত উদাহরণে আমরা একটি 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 ব্যবহার করে জাভাস্ক্রিপ্ট কলব্যাক ফাংশনে প্রতিক্রিয়াটি মোড়ানো করতে পারেন। আপনার নির্দিষ্ট কলব্যাক ফাংশনে 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'

সময়সীমা

সার্ভার সাইডে পঠন প্রক্রিয়ায় কত সময় লাগে তা সীমিত করতে এটি ব্যবহার করুন। যদি একটি পঠন প্রক্রিয়া নির্ধারিত সময়ের মধ্যে শেষ না হয়, তাহলে এটি HTTP 400 ত্রুটির সাথে শেষ হয়ে যায়। এটি বিশেষভাবে কার্যকর যখন আপনি একটি ছোট ডেটা স্থানান্তর আশা করেন এবং একটি সম্ভাব্য বিশাল সাবট্রি আনতে খুব বেশি সময় অপেক্ষা করতে চান না। প্রকৃত পঠন সময় ডেটা আকার এবং ক্যাশিংয়ের উপর ভিত্তি করে পরিবর্তিত হতে পারে।

নিম্নলিখিত ফর্ম্যাট ব্যবহার করে timeouts নির্দিষ্ট করুন: 3ms , 3s , অথবা 3min , একটি সংখ্যা এবং একটি ইউনিট সহ। যদি নির্দিষ্ট না করা থাকে, তাহলে সর্বোচ্চ 15min timeout প্রয়োগ করা হবে। যদি timeout ধনাত্মক না হয়, অথবা সর্বোচ্চ সীমা অতিক্রম করে, তাহলে HTTP 400 ত্রুটির মাধ্যমে অনুরোধটি প্রত্যাখ্যান করা হবে। নিম্নলিখিত উদাহরণে, GET অনুরোধে 10 সেকেন্ডের timeout অন্তর্ভুক্ত রয়েছে।

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

ডেটা ফিল্টার করা হচ্ছে

আমরা বিভিন্ন কারণের উপর ভিত্তি করে ডেটা ফিল্টার করার জন্য কোয়েরি তৈরি করতে পারি। শুরু করার জন্য, আপনি orderBy প্যারামিটার ব্যবহার করে আপনার ডেটা কীভাবে ফিল্টার করতে চান তা নির্দিষ্ট করুন। তারপর, আপনি orderBy অন্য পাঁচটি প্যারামিটারের যেকোনো একটির সাথে একত্রিত করেন: limitToFirst , limitToLast , startAt , endAt , এবং equalTo

যেহেতু ফায়ারবেসে আমরা সকলেই ডাইনোসরদের বেশ ভালো মনে করি, তাই আমরা ডাইনোসরের তথ্যের একটি নমুনা ডাটাবেস থেকে একটি স্নিপেট ব্যবহার করব যাতে আপনি কীভাবে ডেটা ফিল্টার করতে পারেন তা প্রদর্শন করতে পারি:

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

আমরা তিনটি উপায়ের যেকোনো একটিতে ডেটা ফিল্টার করতে পারি: চাইল্ড কী দ্বারা, কী দ্বারা, অথবা মান দ্বারা। একটি কোয়েরি এই প্যারামিটারগুলির একটি দিয়ে শুরু হয় এবং তারপরে নিম্নলিখিত এক বা একাধিক প্যারামিটারের সাথে একত্রিত করতে হবে: startAt , endAt , limitToFirst , limitToLast , অথবা equalTo

একটি নির্দিষ্ট চাইল্ড কী দ্বারা ফিল্টারিং

আমরা একটি সাধারণ চাইল্ড কী দিয়ে নোড ফিল্টার করতে পারি, সেই কীটি orderBy প্যারামিটারে পাস করে। উদাহরণস্বরূপ, 3 এর বেশি উচ্চতার সমস্ত ডাইনোসর পুনরুদ্ধার করতে, আমরা নিম্নলিখিতগুলি করতে পারি:

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

যে নোডে আমরা যে চাইল্ড কী ফিল্টার করছি তা নেই, তাকে null মান দিয়ে সাজানো হবে। ডেটা কীভাবে অর্ডার করা হয় তার বিস্তারিত জানার জন্য, How Data is Ordered দেখুন।

ফায়ারবেস শুধুমাত্র এক স্তরের নিচে থাকা শিশুদের পরিবর্তে, গভীরভাবে নেস্টেড শিশুদের দ্বারা সাজানো কোয়েরিগুলিকে সমর্থন করে। যদি আপনার কাছে এই ধরণের গভীরভাবে নেস্টেড ডেটা থাকে তবে এটি কার্যকর:

{
  "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
  }
}

৫০ এর বেশি স্কোর পাওয়া সকল ডাইনোসরকে উদ্ধার করতে, আমরা নিম্নলিখিত অনুরোধ করতে পারি:

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

orderBy="$value" ব্যবহার করার সময় null , boolean, string, এবং object মানগুলি কীভাবে সাজানো হয় তার ব্যাখ্যার জন্য Data কীভাবে সাজানো হয় তা দেখুন।

জটিল ফিল্টারিং

আমরা আরও জটিল প্রশ্ন তৈরি করতে একাধিক পরামিতি একত্রিত করতে পারি।

সীমাবদ্ধ প্রশ্ন

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 ব্যবহার করতে পারি:

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 ব্যবহার করে একটি চাইল্ড কী-এর নাম ব্যবহার করা হয়, তখন নির্দিষ্ট চাইল্ড কী ধারণকারী ডেটা নিম্নরূপে সাজানো হবে:

  1. নির্দিষ্ট শিশু কী-এর জন্য null মান সহ শিশুরা প্রথমে আসে।
  2. নির্দিষ্ট শিশু কী-এর জন্য false মান সহ শিশুদের পরে আসে। যদি একাধিক শিশুদের false মান থাকে, তবে তাদের কী অনুসারে অভিধানিকভাবে সাজানো হয়।
  3. নির্দিষ্ট child key-এর জন্য true মান সম্পন্ন শিশুদের পরে আসে। যদি একাধিক শিশুদের true মান থাকে, তাহলে তাদের অভিধানিকভাবে key অনুসারে সাজানো হয়।
  4. সংখ্যাসূচক মান সম্পন্ন শিশুরা পরবর্তীতে আসে, ঊর্ধ্বক্রমানুসারে সাজানো। যদি একাধিক শিশু নির্দিষ্ট শিশু নোডের জন্য একই সংখ্যাসূচক মান ধারণ করে, তাহলে তাদের কী অনুসারে সাজানো হয়।
  5. স্ট্রিংগুলি সংখ্যার পরে আসে এবং লেক্সিকোগ্রাফিকভাবে ঊর্ধ্বক্রমানুসারে সাজানো হয়। যদি একাধিক চাইল্ড নোডের জন্য একই মান থাকে, তাহলে সেগুলিকে কী দ্বারা লেক্সিকোগ্রাফিকভাবে সাজানো হয়।
  6. বস্তুগুলি শেষে আসে, এবং শব্দকোষ অনুসারে ঊর্ধ্বক্রমানুসারে কী অনুসারে সাজানো হয়।
ফিল্টার করা ফলাফলগুলি ক্রমবিহীনভাবে ফেরত পাঠানো হয়। যদি আপনার ডেটার ক্রম গুরুত্বপূর্ণ হয় তবে Firebase থেকে ফলাফলগুলি ফেরত দেওয়ার পরে আপনার অ্যাপ্লিকেশনে ফলাফলগুলি সাজানো উচিত।

অর্ডারবাই = "$key"

যখন orderBy="$key" প্যারামিটার ব্যবহার করে আপনার ডেটা সাজানো হবে, তখন ডেটা নিম্নরূপ কী অনুসারে ঊর্ধ্বক্রমানুসারে ফেরত পাঠানো হবে। মনে রাখবেন যে কীগুলি কেবল স্ট্রিং হতে পারে।

  1. ৩২-বিট পূর্ণসংখ্যা হিসেবে পার্স করা যায় এমন কী সহ শিশুদের প্রথমে আসে, আরোহী ক্রমে সাজানো হয়।
  2. যেসব শিশুদের কী হিসেবে স্ট্রিং মান থাকে, তারা পরবর্তীতে আসে, লেক্সিকোগ্রাফিকভাবে ঊর্ধ্বক্রমানুসারে সাজানো হয়।

অর্ডারবাই = "$মান"

যখন আপনার ডেটা সাজানোর জন্য orderBy="$value" প্যারামিটার ব্যবহার করা হবে, তখন শিশুদের তাদের মান অনুসারে সাজানো হবে। অর্ডারিং মানদণ্ড একটি চাইল্ড কী দ্বারা সাজানো ডেটার মতোই, তবে নির্দিষ্ট চাইল্ড কী-এর মানের পরিবর্তে নোডের মান ব্যবহার করা হয়।

অর্ডারবাই = "$অগ্রাধিকার"

আপনার ডেটা সাজানোর জন্য orderBy="$priority" প্যারামিটার ব্যবহার করার সময়, শিশুদের ক্রম তাদের অগ্রাধিকার এবং কী দ্বারা নির্ধারিত হয় যা নিম্নরূপ। মনে রাখবেন যে অগ্রাধিকারের মানগুলি কেবল সংখ্যা বা স্ট্রিং হতে পারে।

  1. কোন অগ্রাধিকার ছাড়াই (ডিফল্ট) শিশুরা প্রথমে আসে।
  2. সংখ্যা অগ্রাধিকারপ্রাপ্ত শিশুদের পরে আসে। তাদের সংখ্যাসূচকভাবে অগ্রাধিকার অনুসারে সাজানো হয়, ছোট থেকে বড়।
  3. যেসব শিশুদের অগ্রাধিকার হিসেবে একটি স্ট্রিং থাকে, তারা সবার শেষে থাকে। তাদের অগ্রাধিকার অনুসারে অভিধানগতভাবে সাজানো হয়।
  4. যখনই দুটি শিশুর অগ্রাধিকার একই থাকে (কোনও অগ্রাধিকার না থাকা সত্ত্বেও), তাদের কী অনুসারে সাজানো হয়। সংখ্যাসূচক কীগুলি প্রথমে আসে (সংখ্যাসূচকভাবে সাজানো), তারপরে অবশিষ্ট কীগুলি (আভিধানিকভাবে সাজানো)।

অগ্রাধিকার সম্পর্কে আরও তথ্যের জন্য, API রেফারেন্স দেখুন।

REST API থেকে স্ট্রিমিং

Firebase REST এন্ডপয়েন্টগুলি EventSource / Server-Sent Events প্রোটোকল সমর্থন করে, যা আমাদের Firebase ডাটাবেসের একটি একক স্থানে পরিবর্তনগুলি স্ট্রিম করা সহজ করে তোলে।

স্ট্রিমিং শুরু করার জন্য, আমাদের নিম্নলিখিতগুলি করতে হবে:

  1. ক্লায়েন্টের Accept হেডারটি text/event-stream এ সেট করুন।
  2. HTTP পুনঃনির্দেশনাগুলিকে সম্মান করুন, বিশেষ করে HTTP স্ট্যাটাস কোড 307
  3. যদি Firebase ডাটাবেস অবস্থান পড়ার জন্য অনুমতির প্রয়োজন হয়, তাহলে auth কোয়েরি প্যারামিটার অন্তর্ভুক্ত করুন।

বিনিময়ে, অনুরোধকৃত URL-এ ডেটার অবস্থা পরিবর্তন হলে সার্ভার নামযুক্ত ইভেন্টগুলি পাঠাবে। এই বার্তাগুলির গঠন ইভেন্টসোর্স প্রোটোকলের সাথে সঙ্গতিপূর্ণ:

event: event name
data: JSON encoded data payload

সার্ভার নিম্নলিখিত ইভেন্টগুলি পাঠাতে পারে:

রাখা JSON-এনকোডেড ডেটা দুটি কী সহ একটি অবজেক্ট হবে: পাথ এবং ডেটা
পাথটি অনুরোধ URL এর সাথে সম্পর্কিত একটি অবস্থানের দিকে নির্দেশ করে।
ক্লায়েন্টের উচিত তার ক্যাশে থাকা সমস্ত ডেটা বার্তায় প্রদত্ত ডেটা দিয়ে প্রতিস্থাপন করা।
প্যাচ JSON-এনকোডেড ডেটা দুটি কী সহ একটি অবজেক্ট হবে: পাথ এবং ডেটা
পাথটি অনুরোধ URL এর সাথে সম্পর্কিত একটি অবস্থানের দিকে নির্দেশ করে।
ডেটাতে থাকা প্রতিটি কী-এর জন্য, ক্লায়েন্টকে তার ক্যাশে থাকা সংশ্লিষ্ট কীটি বার্তায় থাকা সেই কী-এর ডেটা দিয়ে প্রতিস্থাপন করতে হবে।
জীবিত রাখা এই ইভেন্টের ডেটা শূন্য, কোনও পদক্ষেপ নেওয়ার প্রয়োজন নেই।
বাতিল করুন এই ইভেন্টের তথ্য শূন্য।
যদি 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 এবং Streaming API গুলির জন্য একটি তৃতীয় পক্ষের র‍্যাপার।