Firebase onChildAdded并不总是被调用

时间:2016-05-15 18:10:23

标签: android firebase

我有一个Firebase数据库,用于在我的Android应用中保存用户特定数据。要检索数据,我使用ChildEventListener在启动时获取数据。

        userRef = new Firebase("https://XXX.firebaseio.com/users_data/" + authData.getUid());

        // Attach an listener to read the data at our posts reference
        userEventListener =  new UserChildEventListener();

        userRef.addChildEventListener( userEventListener );

大部分时间一切正常。调用onChildAdded函数并在本地添加数据。但是有些情况下没有调用它。我检查了身份验证是否正常(其他节点中的其他数据正在加载)。我将Firebase的日志级别更改为DEBUG,当它工作时,它对于每个子节点都是这样的:

  

D / EventRaiser(24587):提升/ users_data / google:XXX:CHILD_ADDED:{bel_activce:active}   D / FirebaseDataHelper(24587):onChildAdded:bel_active

当它不起作用时它只是(没有onChildAdded调用):

  

D / EventRaiser(25553):提升/ users_data / google:XXX:CHILD_ADDED:{bel_active:active}

这个Raising日志究竟是什么意思?好像数据正在更新,但由于某种原因,回调没有被调用?

感谢您的帮助。

更新

基于@FrankvanPuffelen反馈,我检查了onCancelled()函数,结果发现它在两种情况下都被调用。这是两种情况下所有CHILD_ADDED提升后发生的日志。

  

D / EventRaiser(24587):提升/ users_data / google:XXX:取消   D / FirebaseDataHelper(24587):onCancelled:message:details:code:-3 auth:google:XXX

onCancelled:...行记录在回调中,如下所示:

Log.d(TAG, "onCancelled: message: " +firebaseError.getDetails() + " details: " + firebaseError.getDetails() + " code: " +firebaseError.getCode() + " auth: " + authData.getUid());

以下是此节点的安全规则:

{ 
"rules": {
"users_data": {
  ".validate": "auth != null",
  "$user_id": {
    ".write": "$user_id === auth.uid",
    ".read": "$user_id === auth.uid"
  }
}
}

这有什么问题吗?

0 个答案:

没有答案