База данных Firebase RealTime Удалить первые 20 предметов - PullRequest
0 голосов
/ 16 октября 2018
DatabaseReference newReferance = database.getReference().child("Users");
    Query query = newReferance.orderByChild("timestamp");
    query.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            chatMessages.clear();
            for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {

                HashMap<String, String> hashMap = (HashMap<String, String>) dataSnapshot1.getValue();
                //String userMail = hashMap.get("useremail");
                String userMessage = hashMap.get("usermessage");
                String userCt = hashMap.get("usershow");
                chatMessages.add(userCt + ": " + userMessage);
                if (chatMessages.size() >= 10){
                    for (int i= 0; i < 5; i++){
                        //HOW ????
                    }
                }
                recyclerAdapter.notifyDataSetChanged();

            }
        }

Привет, дорогие ребята.Как выбрать и удалить первые 5 данных в базе данных в реальном времени?Когда ArrayList достигает определенного предела, я хочу удалить первые 5 данных из базы данных.Буду признателен, если вы поможете с проблемой.

Ответы [ 5 ]

0 голосов
/ 17 октября 2018
if (chatMessages.size() >= 10) {
        Query query1 = newRefere.orderByChild("timestamp").limitToFirst(5);
        query1.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for (DataSnapshot ds : dataSnapshot.getChildren()){
                    ds.getRef().removeValue();
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

Я решил проблему.С этим кодом

0 голосов
/ 17 октября 2018
    public void getDataFirebase() {

    /*if (chatMessages.size() == MAX_MSJ_LIMIT){
        database.getReference().child("Users").removeValue();
    }*/
    final DatabaseReference newRefere = database.getReference().child("Users");
    Query query = newRefere.orderByChild("timestamp");
    query.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            chatMessages.clear();
            for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {

                HashMap<String, String> hashMap = (HashMap<String, String>) dataSnapshot1.getValue();
                //String userMail = hashMap.get("useremail");
                String userMessage = hashMap.get("usermessage");
                String userCt = hashMap.get("usershow");
                chatMessages.add(userCt + ": " + userMessage);
                recyclerAdapter.notifyDataSetChanged();
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
            Toast.makeText(getApplicationContext(), databaseError.getMessage(), Toast.LENGTH_LONG).show();
        }
    });

    if (chatMessages.size() >= 10) {
        Query query1 = newRefere.orderByChild("timestamp").limitToFirst(5);
        query1.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                dataSnapshot.getRef().removeValue();
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });
    }
}

Он не просто стер первые 5 данных.

0 голосов
/ 16 октября 2018

rootRef - ссылка на базу данных firebase.чей экземпляр мы должны получить, прежде чем пытаться удалить любое значение.Вы можете увидеть код, приведенный ниже.

count = 0;
    rootRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot snapshot) {
            for (DataSnapshot postSnapshot : snapshot.getChildren()) {
                CommonLocationClass user = postSnapshot.getValue(CommonLocationClass.class);
                if (count < 5) {
                    rootRef.child(user.getPhNo).removeValue();
                    count++;
                }
            }
        }
    }

    @Override
    public void onCancelled (DatabaseError firebaseError){

    }
});

CommonLocationClass - это класс модели установщика геттера, который я сделал, чтобы упростить реализацию на основе огня

, вы можете попробовать это, это работает для меня

0 голосов
/ 17 октября 2018

Как выбрать и удалить первые 5 данных в базе данных реального времени?

Этого можно добиться с помощью limitToFirst (int limit) в Firebase Query:

Создать запрос с лимитом и привязать его к началу окна

И в коде должно выглядеть так:

Query query = newReferance.orderByChild("timestamp").limitToFirst(5);

Смотрите, я использовал этот limitToFirst() метод, который может помочь вам найти первые 5 пунктов.Чтобы удалить их, просто присоедините слушателя и в методе onDataChange() используйте следующую строку кода:

dataSnapshot.getRef().removeValue();
0 голосов
/ 16 октября 2018
final DatabaseReference newReferance = database.getReference().child("Users");
    final Query query = newReferance.orderByChild("timestamp");
    query.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            chatMessages.clear();
            for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {

                HashMap<String, String> hashMap = (HashMap<String, String>) dataSnapshot1.getValue();
                //String userMail = hashMap.get("useremail");
                String userMessage = hashMap.get("usermessage");
                String userCt = hashMap.get("usershow");
                chatMessages.add(userCt + ": " + userMessage);
                if (chatMessages.size() >= 10){
                    Query query1 = newReferance.limitToFirst(5);
                    query.addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                            database.getReference().child("Users").setValue(null);
                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) {

                        }
                    });
                }
                recyclerAdapter.notifyDataSetChanged();

            }
        }

Хотя я настроен, все удалено.Я не могу стереть предметы, которые хочу.Все очищено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...