Firebase查询返回错误值

时间:2019-01-28 15:55:34

标签: android firebase firebase-realtime-database

enter image description here enter image description here我正在尝试检索聊天应用程序中用户未阅读的消息数。为此,我将值存储在两个不同的表中。首先是“聊天”,另一个是“消息”。我在Firebase的“聊天”表中存储了两个值,其中包含看到的值和时间戳,每当一个用户向另一位用户发送消息时,它会将这些值存储在“聊天”表和“消息”表中。消息表存储值-发件人,消息,可见,时间(这是一个时间戳)和类型。问题是,当我在firebase上的查询下运行时,我希望它返回所有时间戳比“聊天”表中存储的时间戳值大/大的消息。

 DatabaseReference chatdatabase = FirebaseDatabase.getInstance()  
   .getReference().child("Chat").child(mCurrent_user_id).child(list_user_id);
 chatdatabase.addValueEventListener(new ValueEventListener() {
     @Override
     public void onDataChange(DataSnapshot dataSnapshot) {
          timelast = ((long) dataSnapshot.child("timestamp").getValue());
          //timestamp is the value in chat table which i use to compare 
          DatabaseReference mMsgDatabase =                      
           FirebaseDatabase.getInstance().getReference().child("messages")
                             .child(mCurrent_user_id).child(list_user_id);
         Query querymsg =mMsgDatabase.orderByChild("time").startAt(timelast);
         //  here i am retrieving a datasnapshot from Message table 
         querymsg.addValueEventListener(new ValueEventListener() 
              {
              @Override
              public void onDataChange(DataSnapshot dataSnapshot) 
                   {
                    if (dataSnapshot.exists()){
                     for (DataSnapshot snapshot : dataSnapshot.getChildren())
                           {
                           long i = snapshot.getChildrenCount();
                           -- dislay number --
                           }
                       }
                   }
            @Override
            public void onCancelled(DatabaseError databaseError) {
            }
         });
      }
      @Override
      public void onCancelled(DatabaseError databaseError) {
      }
 });

我期望查询在比较时间戳之后返回我的消息。我困惑为什么查询即使在我发送一条消息时仍返回一个数字,当发送一条消息时它应该返回1。我在这里有一个问题,对于查询是否可以向我返回值,startat(timestamp)中的值可能存在于另一个表中。或者我的代码有问题。

数据结构

## Heading ##"Chat" : {
"7LVfrVRwZGb7HUcMNKkFxEJrAW52" : {
  "CNFnKyQdNbbwZd8FgFw6tp7WWXR2" : {
    "seen" : false,
    "timestamp" : 1548689212846
  }
},
"CNFnKyQdNbbwZd8FgFw6tp7WWXR2" : {
  "7LVfrVRwZGb7HUcMNKkFxEJrAW52" : {
    "seen" : true,
    "timestamp" : 1548689212844
  }
}


 "messages" : {
"7LVfrVRwZGb7HUcMNKkFxEJrAW52" : {
  "CNFnKyQdNbbwZd8FgFw6tp7WWXR2" : {
    "-LXJNEV30kuj8CazMSt3" : {
      "from" : "CNFnKyQdNbbwZd8FgFw6tp7WWXR2",
      "message" : "hi there",
      "seen" : false,
      "time" : 1548677610585,
      "type" : "text"
    },

0 个答案:

没有答案