проверить, существует ли ключ firebase Android

Я хочу проверить, существует ли ключ в базе данных firebase. так, например, я хочу найти ключ «upvotes», чтобы увидеть, существует ли он или нет.

Вот пример, ключ "upvotes" здесь не существует: введите здесь описание изображения

Теперь я пытаюсь проверить, находится ли ключ «upvotes» в этом месте:

        Map<String, Object> newPost = (Map<String, Object>) ids.next().getValue();
            if(newPost.get("upvotes").toString().equals("upvotes")){
                disp_rate = newPost.get("upvotes").toString();
            }
            else
            {
                disp_rate = "0";
            }

Моя попытка неверна, так как же мне проверить, существует ли ключ "upvotes" в этом месте.


person nothingness    schedule 02.04.2015    source источник
comment
В javascript вы получите snapshot и вызовете hasChild. См. ответ Фрэнка здесь: stackoverflow. com/questions/24824732/ В документации по Java API есть подробная информация о методе Java hasChild: firebase.com/docs/java-api/javadoc/com/firebase/client/ Помогает ли это?   -  person Seamus    schedule 02.04.2015
comment
спасибо за ваш ответ, я проверял, существует ли ключ не дочерний, но я наткнулся на это exists public boolean exists() Returns true if the snapshot contains a non-null value. Returns: True if the snapshot contains a non-null value, otherwise false я думаю, что это он, теперь просто нужно понять, как его использовать.   -  person nothingness    schedule 02.04.2015
comment
заработало просто нужна была эта функция   -  person nothingness    schedule 03.04.2015


Ответы (2)


Если вы хотите проверить, существует ли ключ или нет, попробуйте это.

firebaseRef.orderByKey().equalTo(key).addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {

              if(dataSnapshot.exists()) {
                   //Key exists
                   Log.d(TAG,""+key);
              } else {
                  //Key does not exist
              }

    }

    @Override
    public void onCancelled(FirebaseError firebaseError) {

    }
});
person Saurabh Padwekar    schedule 18.12.2016

Просто нужно было использовать эту логическую функцию containsKey

so...

boolean check_rate = newPost.containsKey("upvotes");

if(check_rate == true){
                String disp_rate = newPost.get("upvotes").toString();
                rate_count.setText(disp_rate);
            }
            else{
                System.out.println("FAILED");
            }

Это исправит транзакцию, если у кого-то возникнет такая же проблема с голосованием.

person nothingness    schedule 02.04.2015