ওয়েবে ডেটা তালিকাগুলির সাথে কাজ করুন

একটি ডাটাবেস রেফারেন্স পান

পড়তে বা লিখতে তথ্য ডাটাবেস থেকে, আপনি একটি দৃষ্টান্ত প্রয়োজন firebase.database.Reference :

ওয়েব সংস্করণ 9

import { getDatabase } from "firebase/database";

const database = getDatabase();

ওয়েব সংস্করণ 8

var database = firebase.database();

তালিকা পড়া এবং লেখা

ডেটার একটি তালিকা যুক্ত করুন

ব্যবহার করুন push() multiuser অ্যাপ্লিকেশন একটি তালিকা ডেটা সংযোজন করতে পদ্ধতি। push() পদ্ধতি একটি অনন্য কী প্রত্যেক সময় একটি নতুন শিশু নিদিষ্ট Firebase রেফারেন্স যোগ করা হয় জেনারেট করে। তালিকার প্রতিটি নতুন উপাদানের জন্য এই স্বয়ংক্রিয়ভাবে তৈরি কীগুলি ব্যবহার করে, বেশ কয়েকজন ক্লায়েন্ট একই সময়ে একই জায়গায় শিশুদের লিখতে দ্বন্দ্ব ছাড়াই যুক্ত করতে পারে। অনন্য দ্বারা উত্পন্ন কী push() , একটি টাইমস্ট্যাম্প উপর ভিত্তি করে, যাতে তালিকা আইটেমগুলি স্বয়ংক্রিয়ভাবে কালানুক্রমে আদেশ হয়।

আপনি দ্বারা ফিরে নতুন তথ্য রেফারেন্স ব্যবহার করতে পারেন push() সন্তানের জন্য সন্তানের স্বয়ংক্রিয়ভাবে তৈরি কী বা সেট ডেটার মান পেতে পদ্ধতি। .key একটি সম্পত্তির push() রেফারেন্স স্বয়ংক্রিয়ভাবে তৈরি কী আছে।

আপনার ডেটা স্ট্রাকচার সমতল করার জন্য আপনি এই স্বয়ংক্রিয়ভাবে তৈরি কীগুলি ব্যবহার করতে পারেন। আরো তথ্যের জন্য, ডেটা পাখা-আউট দেখতে উদাহরণ

উদাহরণস্বরূপ, push() একটি সামাজিক অ্যাপ্লিকেশনে পোস্ট একটি তালিকায় একটি নতুন পোস্ট যোগ করার জন্য ব্যবহার করা যেতে পারে:

ওয়েব সংস্করণ 9

import { getDatabase, ref, push, set } from "firebase/database";

// Create a new post reference with an auto-generated id
const db = getDatabase();
const postListRef = ref(db, 'posts');
const newPostRef = push(postListRef);
set(newPostRef, {
    // ...
});

ওয়েব সংস্করণ 8

// Create a new post reference with an auto-generated id
var postListRef = firebase.database().ref('posts');
var newPostRef = postListRef.push();
newPostRef.set({
    // ...
});

শিশুর ঘটনা শুনুন

শিশু ঘটনা যেমন একটি নতুন শিশু মাধ্যমে যোগ হিসাবে নির্দিষ্ট অপারেশন যে একটি অপারেশন থেকে একটি নোড সন্তান ঘটতে প্রতিক্রিয়ায় আলোড়ন সৃষ্টি হয় push() মাধ্যমে আপডেট করা হচ্ছে পদ্ধতি বা একটি শিশু update() পদ্ধতি।

ঘটনা সাধারণ ব্যবহার
child_added আইটেমের তালিকা পুনরুদ্ধার করুন বা আইটেমের তালিকায় সংযোজনের জন্য শুনুন। এই ইভেন্টটি প্রতিটি বিদ্যমান শিশুর জন্য একবার ট্রিগার করা হয় এবং তারপর প্রতিবার একটি নির্দিষ্ট শিশুকে নির্দিষ্ট পথে যুক্ত করা হয়। শ্রোতাকে নতুন সন্তানের ডেটা সম্বলিত একটি স্ন্যাপশট দেওয়া হয়।
child_changed একটি তালিকার আইটেমগুলির পরিবর্তনের জন্য শুনুন। যে কোনো সময় শিশু নোড পরিবর্তন করা হলে এই ইভেন্টটি ট্রিগার হয়। এতে চাইল্ড নোডের বংশধরদের কোন পরিবর্তন অন্তর্ভুক্ত রয়েছে। ইভেন্ট শ্রোতার কাছে স্ন্যাপশটটি সন্তানের জন্য আপডেট হওয়া ডেটা রয়েছে।
child_removed একটি তালিকা থেকে আইটেমগুলি সরানো হচ্ছে শুনুন। একটি তাত্ক্ষণিক শিশুকে সরানো হলে এই ঘটনাটি শুরু হয়।
child_moved অর্ডারকৃত তালিকায় আইটেমের ক্রম পরিবর্তনের জন্য শুনুন। child_moved ঘটনা সবসময় অনুসরণ child_changed (আপনার বর্তমান অর্ডার বাই পদ্ধতি উপর ভিত্তি করে) ঘটনা যে পরিবর্তন আইটেমের অর্ডার হত।

এই প্রতিটি একসঙ্গে একটি ডাটাবেসের একটি নির্দিষ্ট নোডের পরিবর্তন শোনার জন্য দরকারী হতে পারে। উদাহরণস্বরূপ, একটি সামাজিক ব্লগিং অ্যাপ একটি পোস্টের মন্তব্যে কার্যকলাপ পর্যবেক্ষণ করতে এই পদ্ধতিগুলি একসাথে ব্যবহার করতে পারে, যেমনটি নীচে দেখানো হয়েছে:

ওয়েব সংস্করণ 9

import { getDatabase, ref, onChildAdded, onChildChanged, onChildRemoved } from "firebase/database";

const db = getDatabase();
const commentsRef = ref(db, 'post-comments/' + postId);
onChildAdded(commentsRef, (data) => {
  addCommentElement(postElement, data.key, data.val().text, data.val().author);
});

onChildChanged(commentsRef, (data) => {
  setCommentValues(postElement, data.key, data.val().text, data.val().author);
});

onChildRemoved(commentsRef, (data) => {
  deleteComment(postElement, data.key);
});

ওয়েব সংস্করণ 8

var commentsRef = firebase.database().ref('post-comments/' + postId);
commentsRef.on('child_added', (data) => {
  addCommentElement(postElement, data.key, data.val().text, data.val().author);
});

commentsRef.on('child_changed', (data) => {
  setCommentValues(postElement, data.key, data.val().text, data.val().author);
});

commentsRef.on('child_removed', (data) => {
  deleteComment(postElement, data.key);
});

মূল্যবান ঘটনাগুলির জন্য শুনুন

যদিও শিশু ইভেন্টগুলি শোনার জন্য ডেটার তালিকা পড়ার প্রস্তাবিত উপায়, একটি তালিকা রেফারেন্সে মান ইভেন্টগুলি শোনা দরকারী।

একটি সংযুক্ত value ডেটার একটি লিস্টে পর্যবেক্ষক একটি একক স্ন্যাপশট যা আপনি পরে অ্যাক্সেস করতে উপর লুপ পৃথক শিশু পারেন হিসাবে তথ্য সমগ্র তালিকা ফিরে আসবে।

এমনকি যখন ক্যোয়ারীর জন্য শুধুমাত্র একটি মিল আছে, স্ন্যাপশট এখনও একটি তালিকা; এটিতে কেবল একটি আইটেম রয়েছে। আইটেমটি অ্যাক্সেস করতে, আপনাকে ফলাফলটি লুপ করতে হবে:

ওয়েব সংস্করণ 9

import { getDatabase, ref, onValue } from "firebase/database";

const db = getDatabase();
const dbRef = ref(db, '/a/b/c');

onValue(dbRef, (snapshot) => {
  snapshot.forEach((childSnapshot) => {
    const childKey = childSnapshot.key;
    const childData = childSnapshot.val();
    // ...
  });
}, {
  onlyOnce: true
});

ওয়েব সংস্করণ 8

ref.once('value', (snapshot) => {
  snapshot.forEach((childSnapshot) => {
    var childKey = childSnapshot.key;
    var childData = childSnapshot.val();
    // ...
  });
});

এই প্যাটার্নটি কাজে লাগতে পারে যখন আপনি একটি অতিরিক্ত অপারেশনে একটি তালিকার সকল শিশুদের আনতে চান, বরং অতিরিক্ত শিশু যোগ করা ইভেন্টগুলি শোনার পরিবর্তে।

বাছাই এবং ফিল্টারিং ডেটা

আপনি রিয়েলটাইম ডাটাবেস ব্যবহার করতে পারেন Query কী অনুসারে সাজানো ডেটা পুনরুদ্ধার করতে, মান দ্বারা একটি শিশুর মান বর্গ, বা। আপনি বাছাইকৃত ফলাফলকে একটি নির্দিষ্ট সংখ্যক ফলাফল বা কী বা মানগুলির একটি পরিসরে ফিল্টার করতে পারেন।

তথ্য সাজান

বাছাইকৃত ডেটা পুনরুদ্ধার করতে, ফলাফলগুলি কীভাবে অর্ডার করা হয় তা নির্ধারণ করার জন্য অর্ডার-বাই পদ্ধতিগুলির একটি নির্দিষ্ট করে শুরু করুন:

পদ্ধতি ব্যবহার
orderByChild() একটি নির্দিষ্ট শিশু কী বা নেস্টেড চাইল্ড পাথের মান দ্বারা অর্ডার ফলাফল।
orderByKey() শিশু কী দ্বারা ফলাফল অর্ডার করুন।
orderByValue() সন্তানের মান অনুযায়ী ফলাফল অর্ডার করুন।

আপনি শুধুমাত্র একটি সময়ে পদ্ধতি দ্বারা আদেশ এক ব্যবহার করতে পারেন। একই ক্যোয়ারীতে একাধিকবার অর্ডার-বাই পদ্ধতি কল করা একটি ত্রুটি ছুঁড়ে দেয়।

নিচের উদাহরণটি দেখায় যে আপনি কিভাবে তার ব্যবহারকারীর তারকা গণনা অনুসারে সাজানো শীর্ষ পোস্টগুলির একটি তালিকা পুনরুদ্ধার করতে পারেন:

ওয়েব সংস্করণ 9

import { getDatabase, ref, query, orderByChild } from "firebase/database";
import { getAuth } from "firebase/auth";

const db = getDatabase();
const auth = getAuth();

const myUserId = auth.currentUser.uid;
const topUserPostsRef = query(ref(db, 'user-posts/' + myUserId), orderByChild('starCount'));

ওয়েব সংস্করণ 8

var myUserId = firebase.auth().currentUser.uid;
var topUserPostsRef = firebase.database().ref('user-posts/' + myUserId).orderByChild('starCount');

এই প্রশ্নের সাথে যে যখন একটি সঙ্গে মিলিত সংজ্ঞায়িত সন্তানের শ্রোতা ডাটাবেসের তাদের ইউজার আইডি উপর ভিত্তি করে পথ থেকে ব্যবহারকারীর পোস্ট সঙ্গে ক্লায়েন্ট সিঙ্ক্রোনাইজ, নক্ষত্র প্রতিটি পোস্টের পেয়েছে সংখ্যা দ্বারা আদেশ দেন। সূচক কী হিসেবে ID- র ব্যবহারের এই কৌশলটি তথ্য ফ্যান আউট বলা হয়, যদি আপনি এটি সম্পর্কে আরো পড়তে পারেন গঠন আপনার ডাটাবেস

থেকে কল orderByChild() পদ্ধতি দ্বারা ফলাফল অর্ডার শিশু কী নির্দিষ্ট করে। এই ক্ষেত্রে, পোস্ট তাদের নিজ নিজ মান অনুসারে বাছাই করা হয় "starCount" সন্তান। প্রশ্নগুলি নেস্টেড শিশুদের দ্বারাও অর্ডার করা যেতে পারে, যদি আপনার কাছে এইরকম তথ্য থাকে:

"posts": {
  "ts-functions": {
    "metrics": {
      "views" : 1200000,
      "likes" : 251000,
      "shares": 1200,
    },
    "title" : "Why you should use TypeScript for writing Cloud Functions",
    "author": "Doug",
  },
  "android-arch-3": {
    "metrics": {
      "views" : 900000,
      "likes" : 117000,
      "shares": 144,
    },
    "title" : "Using Android Architecture Components with Firebase Realtime Database (Part 3)",
    "author": "Doug",
  }
},

এই ক্ষেত্রে, আমরা অধীনে নেস্টেড মান দ্বারা আমাদের তালিকায় উপাদান আদেশ দিতে পারেন metrics আমাদের নেস্টেড শিশু আপেক্ষিক পাথ নির্দিষ্ট করে কী orderByChild() কল।

ওয়েব সংস্করণ 9

import { getDatabase, ref, query, orderByChild } from "firebase/database";

const db = getDatabase();
const mostViewedPosts = query(ref(db, 'posts'), orderByChild('metrics/views'));

ওয়েব সংস্করণ 8

var mostViewedPosts = firebase.database().ref('posts').orderByChild('metrics/views');

অন্য ধরনের তথ্য আদেশ হয় সম্পর্কে আরো তথ্যের জন্য, দেখুন ক্যোয়ারী ডেটা কিভাবে নির্দেশ দেওয়া হয়

ডেটা ফিল্টার করা

ডেটা ফিল্টার করার জন্য, আপনি একটি ক্যোয়ারী তৈরি করার সময় অর্ডার-বাই পদ্ধতির সাথে সীমা বা পরিসীমা পদ্ধতিগুলির যেকোনো একত্রিত করতে পারেন।

পদ্ধতি ব্যবহার
limitToFirst() অর্ডারকৃত ফলাফলের তালিকার শুরু থেকে ফেরার জন্য সর্বাধিক সংখ্যক আইটেম সেট করে।
limitToLast() অর্ডারকৃত ফলাফলের তালিকা থেকে ফিরে আসার জন্য সর্বাধিক সংখ্যক আইটেম সেট করে।
startAt() নির্বাচিত অর্ডার-বাই পদ্ধতির উপর নির্ভর করে নির্দিষ্ট কী বা মূল্যের চেয়ে বড় বা সমান আইটেমগুলি ফেরত দিন।
startAfter() নির্বাচিত অর্ডার-অনুসৃত পদ্ধতির উপর নির্ভর করে নির্দিষ্ট কী বা মানের চেয়ে বড় আইটেমগুলি ফেরত দিন।
endAt() নির্বাচিত অর্ডার-বাই পদ্ধতির উপর নির্ভর করে নির্দিষ্ট কী বা মান থেকে কম বা সমান আইটেমগুলি ফেরত দিন।
endBefore() নির্বাচিত অর্ডার দ্বারা পদ্ধতির উপর নির্ভর করে নির্দিষ্ট কী বা মান থেকে কম আইটেম ফেরত দিন।
equalTo() নির্বাচিত অর্ডার-বাই পদ্ধতির উপর নির্ভর করে নির্দিষ্ট কী বা মান সমান আইটেমগুলি ফেরত দিন।

অর্ডার দ্বারা পদ্ধতির বিপরীতে, আপনি একাধিক সীমা বা পরিসীমা ফাংশন একত্রিত করতে পারেন। উদাহরণস্বরূপ, যদি আপনি একত্রিত করতে পারেন startAt() এবং endAt() মূল্যবোধের উল্লিখিত পরিসীমা ফলাফল সীমিত করতে পদ্ধতি।

ফলাফলের সংখ্যা সীমিত করুন

আপনি ব্যবহার করতে পারেন limitToFirst() এবং limitToLast() শিশুদের একটি প্রদত্ত ইভেন্টের জন্য সিঙ্ক করার জন্য সর্বোচ্চ সংখ্যা সেট করতে পদ্ধতি। উদাহরণস্বরূপ, যদি আপনি ব্যবহার limitToFirst() 100-একটা সীমা সেট করতে, প্রথমে শুধুমাত্র 100 গ্রহণ child_added ইভেন্ট নেই। আপনি 100 টিরও কম আপনার Firebase ডাটাবেস, একটি সঞ্চিত আইটেম থাকে, তাহলে child_added প্রতিটি আইটেমের জন্য ইভেন্ট দাবানল।

আইটেম পরিবর্তন হিসাবে, আপনি পাবেন child_added আইটেম যে প্রশ্নের সাথে এবং এন্টার জন্য ইভেন্টগুলি child_removed আইটেম বের করে তাই 100 এ মোট সংখ্যা থাকার বিষয়টি মতেই ড্রপ জন্য ইভেন্ট নেই।

নিচের উদাহরণটি দেখায় যে কিভাবে ব্লগিং অ্যাপটি ব্যবহারকারীদের দ্বারা সাম্প্রতিক 100 টি পোস্টের একটি তালিকা পুনরুদ্ধারের জন্য একটি প্রশ্নকে সংজ্ঞায়িত করে:

ওয়েব সংস্করণ 9

import { getDatabase, ref, query, limitToLast } from "firebase/database";

const db = getDatabase();
const recentPostsRef = query(ref(db, 'posts'), limitToLast(100));

ওয়েব সংস্করণ 8

var recentPostsRef = firebase.database().ref('posts').limitToLast(100);

এই উদাহরণটিতে শুধুমাত্র একটি ক্যোয়ারী সংজ্ঞায়িত, আসলে ডেটা সিঙ্ক্রোনাইজ করতে এটি একটি সংযুক্ত থাকতে হবে শ্রোতা

কী বা মান দ্বারা ফিল্টার করুন

আপনি ব্যবহার করতে পারেন startAt() , startAfter() , endAt() , endBefore() , এবং equalTo() নির্বিচারে শুরু করে, শেষ, আর জিজ্ঞাসার জন্য সমানতা পয়েন্ট পছন্দ করে নিন। এটি ডেটা পেজিনেট করার জন্য বা বাচ্চাদের নির্দিষ্ট আইটেম খুঁজে বের করার জন্য উপকারী হতে পারে।

কোয়েরি ডেটা কিভাবে অর্ডার করা হয়

এই বিভাগে ব্যাখ্যা ডেটা অর্ডার বাই পদ্ধতি প্রতিটি অনুসারে বাছাই হয় Query বর্গ।

orderByChild

ব্যবহার করার সময় orderByChild() , ডাটা রয়েছে সেটা নির্দিষ্ট সন্তানের কী নিম্নরূপ আদেশ হয়:

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

orderByKey

ব্যবহার করার সময় orderByKey() আপনার ডেটা সাজাতে, ডাটা কী দ্বারা আদেশ আরোহী মধ্যে ফিরিয়ে দেওয়া হয়।

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

orderByValue

ব্যবহার করার সময় orderByValue() , শিশু তাদের মূল্য দ্বারা আদেশ হয়। ক্রম মানদণ্ড হিসেবে একই orderByChild() ছাড়া নোড এর মান একটি নির্দিষ্ট সন্তানের কী মানের পরিবর্তে ব্যবহার করা হয়।

শ্রোতাদের বিচ্ছিন্ন করুন

Callbacks কল করে সরিয়ে ফেলা হয় off() আপনার Firebase ডাটাবেসের রেফারেন্সে পদ্ধতি।

তোমার একটি প্যারামিটার যেমন ক্ষণস্থায়ী দ্বারা একটি একক শ্রোতা অপসারণ করতে পারেন off() কলিং off() কোন যুক্তি অবস্থানের উপর অবস্থানে সব শ্রোতাকে সরিয়ে ফেলা হয়।

কলিং off() একটি পিতা বা মাতা শ্রোতা স্বয়ংক্রিয়ভাবে তার সন্তানের নোড নিবন্ধিত শ্রোতাকে মুছে যায় না করুন; off() যে কোনো শিশু শ্রোতাকে আহ্বান করা আবশ্যক কলব্যাক মুছে ফেলার জন্য।

পরবর্তী পদক্ষেপ