Firebase ValueEventListener返回非现有密钥

时间:2016-12-29 18:00:50

标签: android firebase firebase-realtime-database

我有这个标准的Firebase电话:

ref.child("user/toys/-K2873267832")
   .addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot ) {
         if (dataSnapshot != null) {
           // wow the Data at Firebase database does not exist
         }
    }
}

问题是ref "user/toys/-K2873267832"不存在。当我在console.firebase.google.com上删除密钥时,dataSnapshot不应该有正确的数据。即使密钥user/toys也会被删除。

我一直在为这个项目工作一个月,并且在一个复杂的数据库中有很多ValueEventListener。这是我以前从未见过的。

是什么导致这种情况发生?

1 个答案:

答案 0 :(得分:2)

根据this post

  

如果没有值,将使用空值调用ValueEventListener   存在于某个位置。所以,如果你也打电话   addListenerForSingleValueEvent(),您可以检测到该位置   没有价值。

然后他说dataSnapshot.getValue()应该等于null。因此,虽然将返回有效的dataSnapshot,但该快照的值将为null。