Firebase Android查询未返回任何结果

时间:2016-06-07 04:10:07

标签: android firebase-realtime-database

我已将Firebase数据库9.0.2用于我的应用。

在执行全新安装后的几分钟内,数据库查询工作正常。 但是,当我在几分钟后重新打开应用程序时," onDataChange "和" onCancelled "方法没有返回任何结果。 如果我重新安装应用程序或清除应用程序数据,查询将再次起作用。

我如何运行查询:

Query query = FirebaseDatabase.getInstance().getReference().child("listings").child(id);
        query.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                //do something
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                //do something
            }
        });

这是我的数据库规则:

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

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

您可能使用过addValueEventListener,但在该值发生任何变化时会调用它。如果您想从数据库中读取数据,则需要使用addListenerForSingleValueEvent

mDatabase.child("users").child("childKey").addListenerForSingleValueEvent(
    new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {



        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.w(TAG, "getUser:onCancelled", databaseError.toException());
        }
    });

请参阅this了解更多