Android Firebase onDataChange未调用?

时间:2016-10-04 11:25:57

标签: android firebase firebase-realtime-database

我的Firebase数据库中有超过40,000个节点。但是,每当我尝试从Android代码中读取密钥时,onDataChange方法都不会被调用。

mycode的:

 Firebase firebase = new Firebase(my url);
            firebase.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {

                    Log.d(TAG, "onDataChange : " + dataSnapshot);

                    if (dataSnapshot.getValue() != null) {

                        Map map = (Map) dataSnapshot.getValue();

                        Iterator accountIterator = map.entrySet().iterator();
                        while (accountIterator.hasNext()) {

                            Map.Entry accountPair = (Map.Entry) accountIterator.next();

                            Log.d(TAG, "accountPair : Key : " + accountPair.getKey() + " , Value : " + accountPair.getValue());
                        }

                    }
                }

                @Override
                public void onCancelled(FirebaseError firebaseError) {
                    Log.d(TAG, "onCancelled : " + firebaseError);
                }
            });

I want to retrieve Student node details

请告诉我。我无法在代码中找到任何问题。请给我一些解决方案。

2 个答案:

答案 0 :(得分:2)

要做的第一件事是检查您是否具有从数据库中读取的正确权限。去 https://console.firebase.google.com/project/[your_database_url]/database/rules并检查。在prod中不理想,但是对于测试,你可以将read设置为true

  {
  "rules": {
     ".read": true,
     ".write": "auth != null"
   }
  }

接下来要记住,侦听器是异步触发和忘记调用。因此,一旦在onDataChange()方法中接收到数据,就应该对数据进行任何操作。

答案 1 :(得分:0)

打开Firebase链接->数据库->规则->根据您的情况,此处的值可能为假。使其符合以下条件。

  {
    "rules": {
      ".read": true,
      ".write": true
    }
  }