我的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
请告诉我。我无法在代码中找到任何问题。请给我一些解决方案。
答案 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
}
}