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

GET দিয়ে ডেটা পড়া

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

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

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

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

আমাদের ফায়ারবেস ডাটাবেস থেকে ডেটা পড়ার সময় 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 কল করতে আপনি একটি JavaScript কলব্যাক ফাংশনে প্রতিক্রিয়া মোড়ানোর জন্য 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 অবজেক্ট হয়, তাহলে প্রতিটি কী-এর মান সত্যে ছেঁটে ফেলা হবে। উদাহরণস্বরূপ, নীচের ডেটা ব্যবহার করে:

{
  "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 এর মান দিয়ে সাজানো হবে। ডেটা কীভাবে অর্ডার করা হয় তার বিশদ বিবরণের জন্য, কীভাবে ডেটা অর্ডার করা হয় দেখুন।

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 ব্যবহার করতে পারি এমন সমস্ত ডাইনোসর খুঁজে পেতে যাদের নাম লেক্সিকোগ্রাফিকভাবে টেরোড্যাক্টিলের আগে আসে:

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. নির্দিষ্ট চাইল্ড কী-এর জন্য 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. যখনই দুটি সন্তানের একই অগ্রাধিকার থাকে (কোন অগ্রাধিকার সহ), তারা কী দ্বারা বাছাই করা হয়। সাংখ্যিক কীগুলি প্রথমে আসে (সংখ্যা অনুসারে সাজানো), তারপরে অবশিষ্ট কীগুলি (লেক্সিকোগ্রাফিকভাবে সাজানো)।

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

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

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

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

  1. ক্লায়েন্টের Accept হেডারকে text/event-stream সেট করুন
  2. HTTP পুনঃনির্দেশকে সম্মান করুন, বিশেষ করে HTTP স্ট্যাটাস কোড 307
  3. যদি ফায়ারবেস ডাটাবেস অবস্থানের পড়ার জন্য অনুমতির প্রয়োজন হয় তাহলে 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 ব্যবহার করেন, Firebase REST এবং স্ট্রিমিং API-এর চারপাশে একটি তৃতীয় পক্ষের মোড়ক, Firego দেখুন।