Rumah > Java > javaTutorial > Bagaimana untuk Memilih Produk Rawak dengan Cekap daripada Pangkalan Data Firebase Besar dalam Node?

Bagaimana untuk Memilih Produk Rawak dengan Cekap daripada Pangkalan Data Firebase Besar dalam Node?

Barbara Streisand
Lepaskan: 2024-10-29 06:12:31
asal
327 orang telah melayarinya

How to Efficiently Select Random Products from a Large Firebase Database in Node?

Mendapatkan Produk Rawak Unik dalam Node Firebase

Untuk mendapatkan semula produk rawak tunggal daripada pangkalan data nod melebihi 1000 rekod, pertimbangkan dua pendekatan: penyelesaian klasik dan pendekatan tidak normal.

Penyelesaian Klasik


ListView listView = (ListView) findViewById(R.id.list_view);
ArrayAdapter arrayAdapter = ArrayAdapter baharu<>(context, android.R.layout.simple_list_item_1, randomProductList);
listView.setAdapter(arrayAdapter);
DatabaseReference rootRef = FirebaseDatabase.get
DatabaseReference productsRef = rootRef.child("products"); //Menambahkan panggilan ke .child("products")
ValueEventListener valueEventListener = new ValueEventListener() {

@Override
public void onDataChange(DataSnapshot dataSnapshot) {
    List<String> productList = new ArrayList<>();
    for(DataSnapshot ds : dataSnapshot.getChildren()) {
        String name = ds.child("name").getValue(String.class);
        productList.add(name);
    }

    int productListSize = productList.size();
    List<String> randomProductList = new ArrayList<>();

    randomProductList.add(new Random().nextInt(productListSize)); //Add the random product to list
    arrayAdapter.notifyDatasetChanged();
}

@Override
public void onCancelled(DatabaseError databaseError) {
    Log.d(TAG, "Error: ", task.getException()); //Don't ignore errors!
}
Salin selepas log masuk

};
productsRef.addListenerForSingleValueEvent(value
);< pra>

Pendekatan ini berpusing melalui semua nod produk, menambahkan nama mereka pada senarai dan memilih satu secara rawak.

Pendekatan Tidak Normal

Buat pisahkan nod "productIds" untuk mengelakkan memuat turun sejumlah besar data:

<br>Firebase-root<br> |<br> --- produk<br> |     |<br> |     --- productIdOne<br> |     |      |<br> |     |      --- //butiran<br> |     |<br> |     --- productIdTwo<br> |            |<br> |            --- //butiran<br> |      <br> --- productIds</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">      |
      --- productIdOne: true
      |
      --- productIdTwo: true
      |
      --- //And so on
Salin selepas log masuk


DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference productIdsRef = rootRef.child("productIds");
ValueEventListener valueEventListener = new ValueEventListener() {

@Override
public void onDataChange(DataSnapshot dataSnapshot) {
    List<String> productIdsList = new ArrayList<>();
    for(DataSnapshot ds : dataSnapshot.getChildren()) {
        String productId = ds.getKey();
        productIdsList.add(productId);
    }

    int productListSize = productList.size();
    List<String> randomProductList = new ArrayList<>();

    DatabaseReference productIdRef = rootRef.child("products").child(productIdsList.get(new Random().nextInt(int productListSize));
    ValueEventListener eventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String name = dataSnapshot.child("name").getValue(String.class);
            Log.d("TAG", name);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.d(TAG, "Error: ", task.getException()); //Don't ignore errors!
        }
    };
    productIdRef.addListenerForSingleValueEvent(eventListener);
}

@Override
public void onCancelled(DatabaseError databaseError) {
    Log.d(TAG, "Error: ", task.getException()); //Don't ignore errors!
}
Salin selepas log masuk

};
productIdsRef.addListenerForSingleVa);&🎜 pra>

Pendekatan ini menanyakan nod "productIds" untuk mendapatkan ID produk rawak, kemudian menanyakan nod "products" untuk butiran khusus.

Atas ialah kandungan terperinci Bagaimana untuk Memilih Produk Rawak dengan Cekap daripada Pangkalan Data Firebase Besar dalam Node?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan