база данных firebase получает последний дочерний узел узла [duplicate]

Когда вы делаете это

SomeObject s1 = new SomeObject("first");
SomeObject s2 = s1;

, у вас есть 2 ссылки на один и тот же объект. Это означает, что какой бы ссылочный объект вы ни использовали, сделанные вами изменения будут видны при использовании второй ссылки.

Подумайте об этом так: у вас есть один телевизор в комнате, но два пульта: что вы используете, вы все равно будете вносить изменения в один и тот же базовый объект (телевизор).

0
задан Muhammad Shan 22 April 2017 в 15:24
поделиться

4 ответа

Ваша ссылка неверна. Ваша референтная база данных должна указывать на fnBOM ..... вместо «GTjrWgpKjoeXUt4JdBJTYP1JkVT2»

       final DatabaseReference receiver = 
       users.child("GTjrWgpKjoeXUt4JdBJTYP1JkVT2").child("fnBom...");

, и вы можете хранить каждый дочерний объект на арифметике, а последний элемент доступа - arraylist

        myArrayList.get(myArrayList.size()-1);
0
ответ дан Dwijraj Bhattacharyya 15 August 2018 в 17:53
поделиться
  • 1
    Я не знаю точного ребенка после GTjrw ....... есть несколько дочерних элементов этого – Muhammad Shan 22 April 2017 в 10:07
  • 2
    Какие данные вы хотите получить точно? – Dwijraj Bhattacharyya 22 April 2017 в 10:10
  • 3
    последний узел fnBom .... и я точно не знаю имя fnbpm .., потому что есть несколько дочерних элементов GTjrwg .... включая fnBom, поэтому мне нужен только последний узел – Muhammad Shan 22 April 2017 в 10:18
  • 4
    и мое решение не поможет вам, потому что? – Dwijraj Bhattacharyya 22 April 2017 в 10:21
  • 5
    nope, потому что .child ("fnBom ..."); это наступает время выполнения из цикла – Muhammad Shan 22 April 2017 в 10:22

Если вы знаете полный путь родительского узла (received/GTjrWgpKjoeXUt4JdBJTYP1JkVT2/fnBOM...), вы можете получить только последний дочерний узел в этом месте с помощью limitToLast(1):

DatabaseReference ref = users.child("GTjrWgpKjoeXUt4JdBJTYP1JkVT2/fnBOM...`");
ref.orderByKey().limitToLast(1).addChildEventListener(...

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

2
ответ дан Frank van Puffelen 15 August 2018 в 17:53
поделиться
  • 1
    да, я не знаю полного пути родительского узла – Muhammad Shan 22 April 2017 в 15:08

Наконец, я делаю логику получения последнего узла, даже если мы не знаем точной ссылки нашего дочернего

решения

. В моем сценарии есть три родительских

  1. получил (корневой узел)
  2. пользователь GTjr ..... (я просто знаю ссылку только на эту точку)
  3. и третий узел fnBom. .. (на самом деле проблема в этом мне нужно получить последний ребенок этого массива)

, поэтому я получаю общий ChilderenCount (fnBom .. node), в моем случае это 5, теперь i используется для цикла и сопоставляет его с условием, чтобы получить последний вызов этим

if(loopCount==childrenCount){

 // here we can get the last child 

}

спасибо всем вам, людям :)

0
ответ дан Muhammad Shan 15 August 2018 в 17:53
поделиться
  • 1
    Это плохое решение когда-либо, действительно, вы получаете весь список, затем выбираете один из них. Вы должны изменить структуру своей базы данных. – tabebqena 13 August 2018 в 02:08

Лучшее решение для поиска последнего выходного ребенка из firebase

String LASTMESSAGE=NULL; DatabaseReference dbref = Firebase.getInstance().getReference(); Query lastchield = FirebaseDatabase.child("yourchieldfororder") .orderByKey().limitToLast(1); lastchield.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot ds) { LASTMESSAGE= ds.child("message").getValue().toString(); } @Override public void onCancelled(DatabaseError databaseError) { LASTMESSAGE = "No-Last-MESSAGE-EXIT"; } });

Запрос сначала заказывает дочерний идентификатор, а затем дает вам последний id дочернего элемента в снимке данных.

Счастливое кодирование!

1
ответ дан Sohaib Aslam 15 August 2018 в 17:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: