GET ব্যবহার করে ডেটা পড়া
আমরা আমাদের ফায়ারবেস ডাটাবেসের ইউআরএল এন্ডপয়েন্টে একটি 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 অ্যাপের সিক্রেট অথবা একটি অথেনটিকেশন টোকেন হতে পারে, যেমনটি "Users in 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 এরর দিয়ে টার্মিনেট হয়ে যায়। এটি বিশেষত তখন উপযোগী যখন আপনি অল্প ডেটা ট্রান্সফার আশা করেন এবং একটি সম্ভাব্য বিশাল সাবট্রি ফেচ করার জন্য খুব বেশি সময় অপেক্ষা করতে চান না। ডেটার আকার এবং ক্যাশিংয়ের উপর ভিত্তি করে প্রকৃত রিড টাইম ভিন্ন হতে পারে।
একটি সংখ্যা এবং একটি একক সহ 3ms , 3s , বা 3min এই ফর্ম্যাট ব্যবহার করে timeouts নির্দিষ্ট করুন। যদি নির্দিষ্ট না করা হয়, তাহলে সর্বোচ্চ 15min timeout প্রয়োগ করা হবে। যদি timeout ধনাত্মক না হয়, বা সর্বোচ্চ সীমা অতিক্রম করে, তাহলে HTTP 400 ত্রুটি সহ অনুরোধটি প্রত্যাখ্যান করা হবে। নিম্নলিখিত উদাহরণে, GET অনুরোধটিতে ১০ সেকেন্ডের একটি 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
}
} আমরা তিনটি উপায়ে ডেটা ফিল্টার করতে পারি: চাইল্ড কী (child key) , কী (key ), অথবা ভ্যালু ( value) দ্বারা। একটি কোয়েরি এই প্যারামিটারগুলোর একটি দিয়ে শুরু হয় এবং তারপর এটিকে অবশ্যই নিম্নলিখিত এক বা একাধিক প্যারামিটারের সাথে যুক্ত করতে হবে: startAt , endAt , limitToFirst , limitToLast , অথবা equalTo ।
একটি নির্দিষ্ট চাইল্ড কী দ্বারা ফিল্টারিং
orderBy প্যারামিটারে একটি সাধারণ চাইল্ড কী পাস করে আমরা নোডগুলোকে ফিল্টার করতে পারি। উদাহরণস্বরূপ, ৩-এর বেশি উচ্চতা সম্পন্ন সমস্ত ডাইনোসর খুঁজে পেতে, আমরা নিম্নলিখিত কাজটি করতে পারি:
curl 'https://dinosaur-facts.firebaseio.com/dinosaurs.json?orderBy="height"&startAt=3&print=pretty'
যে নোডে আমরা যে চাইল্ড কী-এর উপর ফিল্টার করছি তা নেই, সেটিকে null ভ্যালু দিয়ে সর্ট করা হবে। ডেটা কীভাবে সাজানো হয় সে সম্পর্কে বিস্তারিত জানতে, “ডেটা কীভাবে সাজানো হয়” দেখুন।
ফায়ারবেস শুধুমাত্র এক স্তর নিচের চাইল্ডের পরিবর্তে, গভীরভাবে নেস্টেড চাইল্ড দ্বারা অর্ডার করা কোয়েরিও সমর্থন করে। আপনার যদি এই ধরনের গভীরভাবে নেস্টেড ডেটা থাকে তবে এটি কার্যকর:
{
"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" প্যারামিটার ব্যবহার করে নোডগুলোকে তাদের কী (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 ভ্যালুগুলো কীভাবে সর্ট করা হয়, তার ব্যাখ্যার জন্য "ডেটা কীভাবে সাজানো হয় " দেখুন।
জটিল ফিল্টারিং
আরও জটিল কোয়েরি তৈরি করার জন্য আমরা একাধিক প্যারামিটার একত্রিত করতে পারি।
কোয়েরি সীমিত করুন
limitToFirst এবং limitToLast প্যারামিটারগুলো সর্বোচ্চ সংখ্যক চাইল্ড ডেটা নির্ধারণ করতে ব্যবহৃত হয়। যদি আমরা সীমা ১০০ নির্ধারণ করি, তবে আমরা কেবল ১০০টি পর্যন্ত মিলে যাওয়া চাইল্ড ডেটা গ্রহণ করব। যদি আমাদের ডাটাবেসে ১০০টির কম মেসেজ সংরক্ষিত থাকে, তবে আমরা প্রতিটি চাইল্ড ডেটা গ্রহণ করব। কিন্তু, যদি আমাদের ১০০টির বেশি মেসেজ থাকে, তবে আমরা কেবল সেই ১০০টি মেসেজের ডেটা গ্রহণ করব। যদি আমরা limitToFirst ব্যবহার করি, তবে এগুলো হবে প্রথম ১০০টি ক্রমানুসারে সাজানো মেসেজ, অথবা যদি আমরা limitToLast ব্যবহার করি, তবে এগুলো হবে শেষ ১০০টি ক্রমানুসারে সাজানো মেসেজ।
আমাদের ডাইনোসর তথ্য ডেটাবেস এবং 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 ব্যবহার করা হলে, যে ডেটাতে নির্দিষ্ট চাইল্ড কী-টি থাকে, তা নিম্নোক্তভাবে সাজানো হবে:
- নির্দিষ্ট চাইল্ড কী-এর মান
nullহলে চাইল্ডগুলো প্রথমে আসে। - নির্দিষ্ট চাইল্ড কী-এর জন্য যেসব চাইল্ডের মান
false, সেগুলো এরপরে আসে। যদি একাধিক চাইল্ডের মানfalseহয়, তবে সেগুলোকে কী অনুসারে আভিধানিকভাবে সাজানো হয়। - নির্দিষ্ট চাইল্ড কী-এর মান '
trueহলে চাইল্ডগুলো এরপরে আসে। যদি একাধিক চাইল্ডের মান 'trueহয়, তবে সেগুলোকে কী অনুসারে আভিধানিকভাবে সাজানো হয়। - সাংখ্যিক মানযুক্ত চাইল্ডগুলো এরপর আরোহী ক্রমে আসে। যদি নির্দিষ্ট চাইল্ড নোডটির জন্য একাধিক চাইল্ডের একই সাংখ্যিক মান থাকে, তবে সেগুলোকে কী (key) অনুসারে সাজানো হয়।
- সংখ্যার পরে স্ট্রিংগুলো আসে এবং আভিধানিকভাবে আরোহী ক্রমে সাজানো হয়। যদি নির্দিষ্ট চাইল্ড নোডের জন্য একাধিক চাইল্ডের একই মান থাকে, তবে সেগুলোকে কী (key) অনুসারে আভিধানিকভাবে সাজানো হয়।
- বস্তুগুলো শেষে আসে এবং চাবি অনুসারে আভিধানিকভাবে আরোহী ক্রমে সাজানো হয়।
orderBy="$key"
আপনার ডেটা সাজানোর জন্য orderBy="$key" প্যারামিটারটি ব্যবহার করলে, ডেটা নিম্নলিখিতভাবে কী (key) অনুসারে আরোহী ক্রমে ফেরত আসবে। মনে রাখবেন যে, কী (key) শুধুমাত্র স্ট্রিং হতে পারে।
- যেসব চাইল্ডের কী-কে ৩২-বিট পূর্ণসংখ্যা হিসেবে পার্স করা যায়, সেগুলো আরোহী ক্রমে প্রথমে আসে।
- যেসব চাইল্ডের কী (key) হিসেবে স্ট্রিং ভ্যালু রয়েছে, সেগুলো আভিধানিকভাবে আরোহী ক্রমে সাজানো অবস্থায় এরপরে আসে।
orderBy="$value"
আপনার ডেটা সর্ট করার জন্য যখন orderBy="$value" প্যারামিটারটি ব্যবহার করা হয়, তখন চাইল্ড নোডগুলো তাদের ভ্যালু অনুসারে সাজানো হবে। সাজানোর এই মানদণ্ডটি চাইল্ড কী (child key) অনুসারে ডেটা সাজানোর মতোই, তবে এক্ষেত্রে একটি নির্দিষ্ট চাইল্ড কী-এর ভ্যালুর পরিবর্তে নোডটির ভ্যালু ব্যবহৃত হয়।
orderBy="$priority"
আপনার ডেটা সর্ট করার জন্য যখন orderBy="$priority" প্যারামিটারটি ব্যবহার করা হয়, তখন চাইল্ডগুলোর ক্রম তাদের প্রায়োরিটি এবং কী-এর উপর ভিত্তি করে নিম্নরূপভাবে নির্ধারিত হয়। মনে রাখবেন যে, প্রায়োরিটির মান শুধুমাত্র সংখ্যা বা স্ট্রিং হতে পারে।
- যেসব শিশুদের কোনো অগ্রাধিকার নেই (যা ডিফল্ট), তারা প্রথমে আসে।
- যেসব শিশুদের অগ্রাধিকার সংখ্যা দ্বারা চিহ্নিত করা হয়েছে, তারা এরপর আসে। তাদেরকে সংখ্যা অনুসারে অগ্রাধিকার অনুযায়ী ছোট থেকে বড় ক্রমে সাজানো হয়।
- যেসব চাইল্ডের প্রায়োরিটি স্ট্রিং, তারা সবার শেষে আসে। তাদেরকে প্রায়োরিটি অনুসারে আভিধানিকভাবে সাজানো হয়।
- যখন দুটি চাইল্ডের একই প্রায়োরিটি থাকে (এমনকি কোনো প্রায়োরিটি না থাকলেও), তখন সেগুলোকে কী (key) অনুসারে সাজানো হয়। সংখ্যাসূচক কীগুলো প্রথমে আসে (সংখ্যাগতভাবে সাজানো), এবং তারপরে বাকি কীগুলো আসে (অভিধানগতভাবে সাজানো)।
অগ্রাধিকার সম্পর্কে আরও তথ্যের জন্য এপিআই রেফারেন্স দেখুন।
REST API থেকে স্ট্রিমিং
Firebase REST এন্ডপয়েন্টগুলো EventSource / Server-Sent Events প্রোটোকল সমর্থন করে, যার ফলে আমাদের Firebase ডেটাবেসের একটি নির্দিষ্ট স্থানে পরিবর্তনগুলো স্ট্রিম করা সহজ হয়।
স্ট্রিমিং শুরু করার জন্য আমাদের নিম্নলিখিত কাজগুলো করতে হবে:
- ক্লায়েন্টের Accept হেডারটি
text/event-streamএ সেট করুন। - HTTP রিডাইরেক্টকে সম্মান করুন, বিশেষ করে HTTP স্ট্যাটাস কোড 307।
- যদি ফায়ারবেস ডাটাবেস লোকেশনটিতে পড়ার অনুমতির প্রয়োজন হয়, তাহলে
authকোয়েরি প্যারামিটারটি অন্তর্ভুক্ত করুন।
এর বিনিময়ে, অনুরোধ করা URL-এর ডেটার অবস্থা পরিবর্তিত হওয়ার সাথে সাথে সার্ভারটি নামযুক্ত ইভেন্ট পাঠাবে। এই বার্তাগুলির গঠন EventSource প্রোটোকল মেনে চলে:
event: event name data: JSON encoded data payload
সার্ভার নিম্নলিখিত ইভেন্টগুলি পাঠাতে পারে:
| রাখুন | JSON-এনকোডেড ডেটাটি একটি অবজেক্ট হবে, যাতে 'path' এবং 'data' এই দুটি কী থাকবে। পাথটি অনুরোধ URL-এর সাপেক্ষে একটি অবস্থান নির্দেশ করে। ক্লায়েন্টকে তার ক্যাশে থাকা ওই অবস্থানের সমস্ত ডেটা মেসেজে দেওয়া ডেটা দিয়ে প্রতিস্থাপন করতে হবে। |
| প্যাচ | JSON-এনকোডেড ডেটাটি একটি অবজেক্ট হবে, যাতে 'path' এবং 'data' এই দুটি কী থাকবে। পাথটি অনুরোধ URL-এর সাপেক্ষে একটি অবস্থান নির্দেশ করে। ডেটার প্রতিটি কী-এর জন্য, ক্লায়েন্টকে তার ক্যাশে থাকা সংশ্লিষ্ট কী-টিকে মেসেজে থাকা সেই কী-এর ডেটা দিয়ে প্রতিস্থাপন করতে হবে। |
| কিপ-অ্যালাইভ | এই ইভেন্টের ডেটা নাল, কোনো পদক্ষেপের প্রয়োজন নেই। |
| বাতিল করুন | এই ইভেন্টের ডেটা শূন্য। যদি Firebase Realtime Database Security Rules কারণে অনুরোধ করা অবস্থানে রিড করার অনুমতি না থাকে, তাহলে এই ইভেন্টটি পাঠানো হবে। |
| প্রমাণীকরণ বাতিল | এই ইভেন্টের ডেটা হলো একটি স্ট্রিং, যা নির্দেশ করে যে ক্রেডেনশিয়ালটির মেয়াদ শেষ হয়ে গেছে। প্রদত্ত অথোরাইজেশন প্যারামিটারটি যখন আর বৈধ থাকবে না, তখন এই ইভেন্টটি পাঠানো হবে। |
নিচে এমন কিছু ইভেন্টের একটি উদাহরণ দেওয়া হলো যা সার্ভার পাঠাতে পারে:
// 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-গুলোর জন্য তৈরি একটি থার্ড-পার্টি র্যাপার।