База данных Firebase студии Android запрашивает выбранное значение - PullRequest
0 голосов
/ 20 декабря 2018

У меня возникают проблемы при попытке запросить некоторую информацию в моей базе данных, следующая картинка возобновляет ту информацию, которую я пытаюсь получить, я пытаюсь получить "productId"

Вот так выглядит моя база данных:

https://i.stack.imgur.com/JhJNs.png

На самом деле я пытаюсь получить это значение, чтобы наложить на него условие.Я пытаюсь отправить уведомление, ТОЛЬКО если выбран productId = 02, вот мой код

if (request.getFoods().isEmpty()) {
     Toast.makeText(Cart.this, "Your cart is empty", Toast.LENGTH_SHORT).show();
 } else{

    final DatabaseReference tokens = FirebaseDatabase.getInstance().getReference("Requests");
    final Query data = tokens.orderByChild("productId").equalTo("02"); // get all node with isServerToken
    data.addValueEventListener(new ValueEventListener() {
                                   @Override
                                   public void onDataChange(DataSnapshot dataSnapshot) {

                                           String order_number = String.valueOf(System.currentTimeMillis());
                                           requests.child(order_number).setValue(request);

                                           sendNotificationOrder(order_number);
                                           Toast.makeText(Cart.this, "Notification sent", Toast.LENGTH_SHORT).show();

                                   }
             @Override
             public void onCancelled(DatabaseError databaseError) {

             }
         });

Спасибо за помощь!

1 Ответ

0 голосов
/ 21 декабря 2018

На самом деле ваш код выше не будет работать с orderByChild(), как это.Если в вашем узле foods есть несколько элементов с родительскими узлами 0, 1 и т. Д., И вы хотите проверить их productId, то только это можно сделать.

Для этого вам нужно сделать родительского потомка foods и вызвать на нем orderByChild() для productId.Код будет выглядеть примерно так:

final DatabaseReference tokens = FirebaseDatabase.getInstance().getReference("Requests").child(id).child("foods");

   tokens.orderByChild("productId").equalTo("02").addSingleValueEventListener(new ValueEventListener() {
             @Override
             public void onDataChange(DataSnapshot dataSnapshot) {
                  // do what you want



             }
             @Override
             public void onCancelled(DatabaseError databaseError) {
                 // Do something for errors, don't ignore
             }

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

Подробнее о том, как сделать структуру базы данных подходящей для orderByChild() , см. здесь.

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