2017-07-28 89 views
0

将新值设置为firebase数据库(在firebase控制台上检查),但在查询数据快照上检索旧值。关于查询firebase数据库datasnapshot retrives旧值

final Query query = FirebaseDatabase.getInstance().getReference(DEVICES_TABLE).orderByChild("deviceUniqueId").equalTo(deviceUniqueId); 
query.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     Device device; 
     if (dataSnapshot.getChildren().iterator().hasNext()) { 
      device = dataSnapshot.getChildren().iterator().next().getValue(Device.class); 
      if (device.getIsEnable() == 1) { 
       loginView.onError(loginView.getContext().getString(R.string.error_device_disable)); 
       doCyberoamLogout(mUserName, location); 
      } else { 
       switch (mMessage) { 
        case CYBEROAM_LOGIN_SUCCESS_MESSAGE: 
         //login successful 
         Toast.makeText(activity, "Cyberoam login success.", Toast.LENGTH_SHORT).show(); 
         new Handler().postDelayed(new Runnable() { 
          @Override 
          public void run() { 
           getEmailUsingCyberoamId(mUserName, mPasswod); 
          } 
         }, 5000); 
         break; 
        case CYBEROAM_WRONG_PASSWORD: 
         signOutFromFirebase(); 
         loginView.onError(CYBEROAM_WRONG_PASSWORD); 
         break; 
        case CYBEROAM_MAX_LOGIN_LIMIT: 
         signOutFromFirebase(); 
         loginView.onError(loginView.getContext().getResources().getString(R.string.prompt_max_login_limit)); 
         break; 
        default: 
         signOutFromFirebase(); 
         loginView.onError(loginView.getContext().getResources().getString(R.string.action_cyberoam_login_failed)); 
         break; 
       } 
      } 
      query.removeEventListener(this); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 

    } 

}); 
+0

你可以发布你的代码吗? –

+0

你确定你正在获取更新的数据吗?而不是在更新或设备有正确的互联网连接来加载新数据而不是来自缓存的数据库信息之前 –

+0

是否启用了持久性? – Pipiks

回答

0

您需要删除此行:

query.removeEventListener(this); 

当持续是有效addValueEventListener下一次最先返回缓存的数据和新的数据。