GET-এর মাধ্যমে ডেটা পড়া
আমরা Firebase ডেটাবেসের 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 প্রোজেক্টে ব্যবহারকারী-তে বর্ণনা করা হয়েছে। নিচের উদাহরণে আমরা 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 অনুরোধে ১০ সেকেন্ডের
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
}
}৫০-এর বেশি স্কোর সহ সব ডাইনোসর খুঁজে পেতে, আমরা নিম্নলিখিত অনুরোধ করতে পারি:
curl 'https://dinosaur-facts.firebaseio.com/scores.json?orderBy="$value"&startAt=50&print=pretty'
orderBy="$value" ব্যবহার করার সময় null, বুলিয়ান, স্ট্রিং এবং অবজেক্ট ভ্যালু কীভাবে সাজানো হয় তার ব্যাখ্যা পেতে
ডেটা কীভাবে সাজানো হয় দেখুন।
জটিল ফিল্টারিং
আরও জটিল কোয়েরি তৈরি করতে আমরা একাধিক প্যারামিটার একত্রিত করতে পারি।
কোয়েরি সীমিত করুন
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
চাইল্ড কী-এর নামের সাথে orderBy ব্যবহার করার সময়, নির্দিষ্ট চাইল্ড কী সহ ডেটা
নিম্নলিখিতভাবে সাজানো হবে:
-
নির্দিষ্ট চাইল্ড কী-এর জন্য
nullভ্যালু সহ বাচ্চারা প্রথমে আসে। -
নির্দিষ্ট চাইল্ড কী-এর জন্য
falseভ্যালু সহ চাইল্ড এর পরে আসে। একাধিক চাইল্ডের ভ্যালুfalseহলে, সেগুলি 'কী' অনুযায়ী লেক্সিকোগ্রাফিক্যালি সাজানো হয়। -
নির্দিষ্ট চাইল্ড কী-এর জন্য
trueভ্যালু সহ চাইল্ড এর পরে আসে। একাধিক চাইল্ডের ভ্যালুtrueহলে, সেগুলি কী অনুযায়ী লেক্সিকোগ্রাফিক্যালি সাজানো হয়। - এরপরে সংখ্যাবাচক মান সহ চাইল্ড আসে, যা ছোট থেকে বড় ক্রমে সাজানো থাকে। একাধিক চাইল্ডের নির্দিষ্ট চাইল্ড নোডের জন্য একই সংখ্যাসূচক মান থাকলে, সেগুলি 'কী' অনুযায়ী সাজানো হয়।
- স্ট্রিং সংখ্যার পরে আসে এবং ছোট থেকে বড় ক্রমানুসারে সাজানো হয়। একাধিক চাইল্ড নোডের জন্য নির্দিষ্ট চাইল্ড নোডের ভ্যালু একই হলে, সেগুলি 'কী' অনুযায়ী লেক্সিকোগ্রাফিক্যালি সাজানো হয়।
- অবজেক্ট শেষে আসে এবং কী অনুযায়ী ছোট থেকে বড় ক্রমানুসারে সাজানো হয়।
orderBy="$key"
আপনার ডেটা সাজাতে orderBy="$key" প্যারামিটার ব্যবহার করার সময়, ডেটা
নিম্নলিখিতভাবে কী অনুযায়ী ঊর্ধ্বক্রমে দেখানো হবে। মনে রাখবেন, 'কী' শুধুমাত্র স্ট্রিং হতে পারে।
- যেসব চিলড্রেনকে ৩২-বিট ইন্টিজার হিসেবে পার্স করা যায়, সেগুলি প্রথমে আসে এবং ছোট থেকে বড় হিসেবে সাজানো হয়।
- এরপরে, স্ট্রিং ভ্যালু কী হিসেবে আছে এমন চাইল্ড নোডগুলি আসে, যা লেক্সিকোগ্রাফিক্যালি ছোট থেকে বড় ক্রমানুসারে সাজানো থাকে।
orderBy="$value"
আপনার ডেটা সাজানোর জন্য orderBy="$value" প্যারামিটার ব্যবহার করার সময়, চাইল্ড
তাদের ভ্যালু অনুযায়ী সাজানো হবে। ক্রমের মাপকাঠি চাইল্ড কী দ্বারা ক্রম করা ডেটার মতোই,
তবে নির্দিষ্ট চাইল্ড কী-এর মানের পরিবর্তে নোডের মান ব্যবহার করা হয়।
orderBy="$priority"
আপনার ডেটা সাজানোর জন্য orderBy="$priority" প্যারামিটার ব্যবহার করার সময়, চাইল্ডের ক্রম তাদের অগ্রাধিকার এবং কী অনুযায়ী নিম্নলিখিতভাবে নির্ধারণ করা হয়। মনে রাখবেন যে প্রায়োরিটি ভ্যালু
শুধুমাত্র সংখ্যা বা স্ট্রিং হতে পারে।
- অগ্রাধিকার নেই (ডিফল্ট) এমন চাইল্ড ভিউ প্রথমে আসে।
- এরপর, অগ্রাধিকার হিসেবে নম্বর সহ বাচ্চাদের নাম দেখানো হয়। অগ্রাধিকারের ভিত্তিতে সংখ্যাগতভাবে সাজানো হয়, ছোট থেকে বড়।
- অগ্রাধিকার হিসেবে স্ট্রিং সহ চাইল্ড সবার শেষে আসে। অগ্রাধিকার অনুযায়ী এগুলি অভিধানের ক্রম অনুসারে সাজানো হয়।
- দুটি চাইল্ডের একই অগ্রাধিকার থাকলে (কোনও অগ্রাধিকার না থাকা সহ), সেগুলি কী (Key) অনুযায়ী সাজানো হয়। প্রথমে সংখ্যাসূচক কী (সংখ্যাগতভাবে সাজানো) এবং তারপরে বাকি কী (অভিধানের ক্রম অনুযায়ী সাজানো) থাকে।
অগ্রাধিকার সম্পর্কে আরও তথ্যের জন্য, API রেফারেন্স দেখুন।
REST API থেকে স্ট্রিমিং
Firebase REST এন্ডপয়েন্ট EventSource / সার্ভার-প্রেরিত ইভেন্ট প্রোটোকলকে সাপোর্ট করে, যা আমাদের Firebase ডেটাবেসের একটি লোকেশনে পরিবর্তন স্ট্রিম করা সহজ করে তোলে।
স্ট্রিমিং শুরু করতে, আমাদের নিম্নলিখিত কাজগুলি করতে হবে:
-
ক্লায়েন্টের অ্যাকসেপ্ট হেডার
text/event-stream-এ সেট করুন - HTTP রিডাইরেক্ট, বিশেষ করে HTTP স্ট্যাটাস কোড 307 মেনে চলুন
-
Firebase ডেটাবেস লোকেশনে পড়ার অনুমতি প্রয়োজন হলে
authকোয়েরি প্যারামিটার অন্তর্ভুক্ত করুন
পরিবর্তে, অনুরোধ করা URL-এ ডেটার স্ট্যাটাস পরিবর্তন হলে, সার্ভার নামযুক্ত ইভেন্ট পাঠাবে। এইসব মেসেজের গঠন EventSource প্রোটোকল মেনে চলে:
event: event name data: JSON encoded data payload
সার্ভার নিম্নলিখিত ইভেন্ট পাঠাতে পারে:
| রাখুন | JSON-এনকোড করা ডেটা হল দুটি কী সহ একটি অবজেক্ট: পাথ ও ডেটা পাথ অনুরোধের URL-এর সাথে সম্পর্কিত একটি লোকেশনকে নির্দেশ করে ক্লায়েন্টকে তার ক্যাশেতে সেই লোকেশনের সমস্ত ডেটা মেসেজে দেওয়া ডেটা দিয়ে পরিবর্তন করতে হবে |
| প্যাচ | JSON-এনকোড করা ডেটা হল দুটি 'কী' সহ একটি অবজেক্ট: পাথ ও ডেটা পাথ অনুরোধের URL-এর সাথে সম্পর্কিত একটি লোকেশনকে নির্দেশ করে ডেটার প্রতিটি 'কী'-এর জন্য, ক্লায়েন্টকে তার ক্যাশেতে সংশ্লিষ্ট 'কী'-কে মেসেজে থাকা সেই 'কী'-এর ডেটা দিয়ে পরিবর্তন করতে হবে |
| keep-alive | এই ইভেন্টের জন্য ডেটা শূন্য, কোনও অ্যাকশন নিতে হবে না |
| বাতিল করুন | এই ইভেন্টের ডেটা নাল 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 এবং স্ট্রিমিং API-এর চারপাশে একটি থার্ড-পার্টি র্যাপার।