Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

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

এই নথিতে তথ্য পুনরুদ্ধারের মূল বিষয়গুলি এবং কিভাবে Firebase ডেটা অর্ডার এবং ফিল্টার করা যায়

তুমি শুরু করার আগে

আগে আপনি ব্যবহার করতে পারেন রিয়েলটাইম ডাটাবেস , আপনি প্রয়োজন:

  • আপনার ইউনিটি প্রকল্প নিবন্ধন করুন এবং ফায়ারবেস ব্যবহার করার জন্য এটি কনফিগার করুন।

    • যদি আপনার ইউনিটি প্রজেক্ট ইতিমধ্যে ফায়ারবেস ব্যবহার করে, তাহলে এটি ইতিমধ্যে ফায়ারবেসের জন্য নিবন্ধিত এবং কনফিগার করা আছে।

    • আপনি যদি একটি ঐক্য প্রকল্প আছে না থাকে, তাহলে আপনি একটি বিনামূল্যে ডাউনলোড করতে পারেন নমুনা অ্যাপ্লিকেশন

  • যোগ Firebase ইউনিটি SDK এর (বিশেষত FirebaseDatabase.unitypackage ) আপনার ইউনিটি প্রকল্পে।

মনে রাখবেন যে আপনার ইউনিটি প্রকল্পে Firebase যোগ উভয় কর্ম জড়িত Firebase কনসোল এবং আপনার খোলা ইউনিটি প্রকল্পে (উদাহরণস্বরূপ, আপনি Firebase কনফিগ ফাইল কনসোল থেকে ডাউনলোড করুন, তারপর তাদেরকে আপনার ইউনিটি প্রকল্পের সরাতে)।

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

Firebase তথ্য GetValueAsync করার জন্য একটি এক সময় কল () অথবা একটি একটি ইভেন্ট সম্প্রচার করার সংযোজনের হয় এর প্রাপ্ত করা হয় FirebaseDatabase রেফারেন্স। ইভেন্ট শ্রোতাকে একবার ডেটার প্রাথমিক অবস্থার জন্য এবং আবার যে কোনও সময় ডেটা পরিবর্তনের জন্য ডাকা হয়।

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

ডাটাবেস থেকে ডেটা পড়তে করার জন্য, আপনাকে একটি দৃষ্টান্ত প্রয়োজন DatabaseReference :

using Firebase;
using Firebase.Database;
using Firebase.Extensions.TaskExtension; // for ContinueWithOnMainThread

public class MyScript: MonoBehaviour {
  void Start() {
    // Get the root reference location of the database.
    DatabaseReference reference = FirebaseDatabase.DefaultInstance.RootReference;
  }
}

একবার ডেটা পড়ুন

আপনি ব্যবহার করতে পারেন GetValueAsync একবার একটি প্রদত্ত পথ এ বিষয়বস্তুর একটি স্ট্যাটিক স্ন্যাপশট পড়তে পদ্ধতি। টাস্কের ফলাফলে একটি স্ন্যাপশট থাকবে যাতে সেই জায়গায় সমস্ত ডেটা থাকবে, যার মধ্যে শিশু ডেটাও থাকবে। যদি কোন তথ্য নেই, স্ন্যাপশট ফিরে আসেন null

    FirebaseDatabase.DefaultInstance
      .GetReference("Leaders")
      .GetValueAsync().ContinueWithOnMainThread(task => {
        if (task.IsFaulted) {
          // Handle the error...
        }
        else if (task.IsCompleted) {
          DataSnapshot snapshot = task.Result;
          // Do something with snapshot...
        }
      });

ঘটনা শুনুন

আপনি ইভেন্ট শ্রোতাদের যোগ করতে পারেন ডেটার পরিবর্তনগুলিতে সাবস্ক্রাইব করতে:

ঘটনা সাধারণ ব্যবহার
ValueChanged একটি পথের সম্পূর্ণ বিষয়বস্তুর পরিবর্তনের জন্য পড়ুন এবং শুনুন।
ChildAdded আইটেমের তালিকা পুনরুদ্ধার করুন বা আইটেমের তালিকায় সংযোজনের জন্য শুনুন। সঙ্গে প্রস্তাবিত ব্যবহারের ChildChanged এবং ChildRemoved তালিকা পরিবর্তন নিরীক্ষণ করতে।
ChildChanged একটি তালিকার আইটেমগুলির পরিবর্তনের জন্য শুনুন। সাথে ব্যবহারের ChildAdded এবং ChildRemoved তালিকা পরিবর্তন নিরীক্ষণ করতে।
ChildRemoved একটি তালিকা থেকে আইটেমগুলি সরানো হচ্ছে শুনুন। সাথে ব্যবহারের ChildAdded এবং ChildChanged তালিকা পরিবর্তন নিরীক্ষণ করতে।
ChildMoved অর্ডারকৃত তালিকায় আইটেমের ক্রম পরিবর্তনের জন্য শুনুন। ChildMoved ঘটনা সবসময় অনুসরণ ChildChanged ঘটনা যে পরিবর্তন আইটেমের অর্ডার সৃষ্ট (আপনার বর্তমান অর্ডার বাই পদ্ধতির উপর ভিত্তি করে)।

মান পরিবর্তিত ইভেন্ট

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

নিচের উদাহরণটি ডাটাবেস থেকে লিডারবোর্ডের স্কোর পুনরুদ্ধার করে এমন একটি গেম প্রদর্শন করে:

      FirebaseDatabase.DefaultInstance
        .GetReference("Leaders")
        .ValueChanged += HandleValueChanged;
    }

    void HandleValueChanged(object sender, ValueChangedEventArgs args) {
      if (args.DatabaseError != null) {
        Debug.LogError(args.DatabaseError.Message);
        return;
      }
      // Do something with the data in args.Snapshot
    }

ValueChangedEventArgs একটি রয়েছে DataSnapshot যে ইভেন্টের জন্য নির্ধারিত সময়ে ডাটাবেসের মধ্যে নির্দিষ্ট অবস্থানে তথ্য রয়েছে। কলিং Value একটি স্ন্যাপশট একটি ফেরৎ Dictionary<string, object> তথ্য উপস্থাপন করে। কোন তথ্য অবস্থানে উপস্থিত থাকলে কলিং Value আয় null

এই উদাহরণে, args.DatabaseError যদি পঠিত বাতিল করা হয়েছে দেখতে পরীক্ষা করা হয়। উদাহরণস্বরূপ, যদি ক্লায়েন্টের ফায়ারবেস ডাটাবেস অবস্থান থেকে পড়ার অনুমতি না থাকে তবে একটি পাঠ বাতিল করা যেতে পারে। DatabaseError ইঙ্গিত হবে কেন ব্যর্থতা ঘটেছে।

আপনি পরে কোনো ব্যবহার ইভেন্ট থেকে ত্যাগ করতে পারেন DatabaseReference একই পথ রয়েছে। DatabaseReference দৃষ্টান্ত ক্ষণজীবী এবং কোনো পাথ এবং কোয়েরি অ্যাক্সেস করতে একটি উপায় হিসেবে ভাবা যেতে পারে।

      FirebaseDatabase.DefaultInstance
        .GetReference("Leaders")
        .ValueChanged -= HandleValueChanged; // unsubscribe from ValueChanged.
    }

শিশু ঘটনা

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

      var ref = FirebaseDatabase.DefaultInstance
      .GetReference("GameSessionComments");

      ref.ChildAdded += HandleChildAdded;
      ref.ChildChanged += HandleChildChanged;
      ref.ChildRemoved += HandleChildRemoved;
      ref.ChildMoved += HandleChildMoved;
    }

    void HandleChildAdded(object sender, ChildChangedEventArgs args) {
      if (args.DatabaseError != null) {
        Debug.LogError(args.DatabaseError.Message);
        return;
      }
      // Do something with the data in args.Snapshot
    }

    void HandleChildChanged(object sender, ChildChangedEventArgs args) {
      if (args.DatabaseError != null) {
        Debug.LogError(args.DatabaseError.Message);
        return;
      }
      // Do something with the data in args.Snapshot
    }

    void HandleChildRemoved(object sender, ChildChangedEventArgs args) {
      if (args.DatabaseError != null) {
        Debug.LogError(args.DatabaseError.Message);
        return;
      }
      // Do something with the data in args.Snapshot
    }

    void HandleChildMoved(object sender, ChildChangedEventArgs args) {
      if (args.DatabaseError != null) {
        Debug.LogError(args.DatabaseError.Message);
        return;
      }
      // Do something with the data in args.Snapshot
    }

ChildAdded ঘটনা সাধারণত Firebase ডাটাবেসের মধ্যে আইটেম একটি তালিকা উদ্ধার করতে ব্যবহৃত হয়। ChildAdded ঘটনা প্রত্যেক সময় একটি নতুন শিশু নির্দিষ্ট পাথ যোগ করা হয় প্রতিটি বিদ্যমান সন্তানের জন্য একবার উত্থাপিত এবং তারপর আবার। শ্রোতাকে নতুন সন্তানের ডেটা সহ একটি স্ন্যাপশট দেওয়া হয়।

ChildChanged ঘটনা যে কোনো সময় একটি শিশু নোড রুপান্তরিত করা হয়েছে উত্থাপিত হয়। এতে চাইল্ড নোডের বংশধরদের কোন পরিবর্তন অন্তর্ভুক্ত রয়েছে। এটি প্রথাগতভাবে সাথে ব্যবহার করা হয় ChildAdded এবং ChildRemoved আইটেম একটি তালিকা পরিবর্তন সাড়া ইভেন্ট নেই। ইভেন্ট শ্রোতার কাছে স্ন্যাপশটটি সন্তানের জন্য আপডেট হওয়া ডেটা রয়েছে।

ChildRemoved যখন একটি তাৎক্ষণিক শিশু মুছে ফেলা হবে ঘটনা সূত্রপাত হয়। এটি প্রথাগতভাবে সাথে ব্যবহার করা হয় ChildAdded এবং ChildChanged callbacks। ইভেন্ট কলব্যাকে প্রেরিত স্ন্যাপশটে সরানো শিশুর ডেটা রয়েছে।

ChildMoved যখনই ঘটনা সূত্রপাত হয় ChildChanged ঘটনা একটি আপডেট সন্তানকে দুধ পান করানোর পুনঃক্রমবিন্যাস কারণ দ্বারা উত্থাপিত হয়। এটি তথ্য যে সঙ্গে নির্দেশ দেওয়া হয় সঙ্গে ব্যবহার করা হয় OrderByChild বা OrderByValue

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

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

তথ্য সাজান

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

পদ্ধতি ব্যবহার
OrderByChild() একটি নির্দিষ্ট শিশু কী এর মান দ্বারা অর্ডার ফলাফল।
OrderByKey() শিশু কী দ্বারা ফলাফল অর্ডার করুন।
OrderByValue() সন্তানের মান অনুযায়ী ফলাফল অর্ডার করুন।

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

নিম্নোক্ত উদাহরণটি দেখায় কিভাবে আপনি স্কোর দ্বারা অর্ডার করা স্কোর লিডারবোর্ডে সাবস্ক্রাইব করতে পারেন।

      FirebaseDatabase.DefaultInstance
        .GetReference("Leaders").OrderByChild("score")
        .ValueChanged += HandleValueChanged;
    }

    void HandleValueChanged(object sender, ValueChangedEventArgs args) {
      if (args.DatabaseError != null) {
        Debug.LogError(args.DatabaseError.Message);
        return;
      }
      // Do something with the data in args.Snapshot
    }

এই প্রশ্নের সাথে যে যখন একটি সঙ্গে মিলিত সংজ্ঞায়িত valuechanged ঘটনা শ্রোতা ডাটাবেসের মধ্যে লিডারবোর্ডে, প্রতিটি এন্ট্রির স্কোর দ্বারা আদেশ সঙ্গে ক্লায়েন্ট সুসংগত করা হবে। আপনি দক্ষতার সঙ্গে আপনার তথ্য structuring সম্বন্ধে আরও পড়তে পারেন আপনার ডাটাবেস গঠন

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

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

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

পদ্ধতি ব্যবহার
LimitToFirst() অর্ডারকৃত ফলাফলের তালিকার শুরু থেকে ফেরার জন্য সর্বাধিক সংখ্যক আইটেম সেট করে।
LimitToLast() অর্ডারকৃত ফলাফলের তালিকা থেকে ফিরে আসার জন্য সর্বাধিক সংখ্যক আইটেম সেট করে।
StartAt() নির্বাচিত অর্ডার-বাই পদ্ধতির উপর নির্ভর করে নির্দিষ্ট কী বা মান এর চেয়ে বড় বা সমান আইটেমগুলি ফেরত দিন।
EndAt() নির্বাচিত অর্ডার-বাই পদ্ধতির উপর নির্ভর করে নির্দিষ্ট কী বা মান থেকে কম বা সমান আইটেমগুলি ফেরত দিন।
EqualTo() নির্বাচিত অর্ডার দ্বারা পদ্ধতির উপর নির্ভর করে নির্দিষ্ট কী বা মান সমান আইটেমগুলি ফেরত দিন।

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

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

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

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

আইটেম পরিবর্তন হিসাবে, আপনি পাবেন ChildAdded আইটেম যে প্রশ্নের সাথে এবং এন্টার জন্য callbacks ChildRemoved আইটেম বের করে তাই 100 এ মোট সংখ্যা থাকার বিষয়টি মতেই ড্রপ জন্য callbacks।

উদাহরণস্বরূপ, নীচের কোডটি লিডারবোর্ড থেকে সর্বোচ্চ স্কোর প্রদান করে:

      FirebaseDatabase.DefaultInstance
        .GetReference("Leaders").OrderByChild("score").LimitToLast(1)
        .ValueChanged += HandleValueChanged;
    }

    void HandleValueChanged(object sender, ValueChangedEventArgs args) {
      if (args.DatabaseError != null) {
        Debug.LogError(args.DatabaseError.Message);
        return;
      }
      // Do something with the data in args.Snapshot
    }

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

আপনি ব্যবহার করতে পারেন StartAt() , EndAt() , এবং 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() ছাড়া নোড এর মান একটি নির্দিষ্ট সন্তানের কী মানের পরিবর্তে ব্যবহার করা হয়।