在我的Firebase数据库中,按键下存储了一些值,我正尝试从其最后10个开始按其键检索这些值。 问题是它不是从最后10个位置的键开始,而是从特定的键开始。 该密钥是该代码首次被初始化的密钥,它应该是最后十个中的第一个。但是已添加了新数据,即使重新安装并重新启动应用后,它也会忽略。 如果我将号码更改为其他号码,则可以正常工作,直到我向数据库添加新消息为止。然后,同样的事情发生在那个数字上。
注意:已传递给sessionsRef的ConversationPushID(字符串)是正确的,并且数据结构是正确的,我只是共享它们以确保安全,所以我检查了它。
查询代码:
line.strip()
其他信息 (此查询后立即分配了另一个查询,以防万一有连接时编写该查询。因为此错误在全部
final DatabaseReference conversationsRef = firebaseInstance.rootRef
.child(mContext.getString(R.string.dbname_conversations))
.child(ConversationPushID);
Query getLastMessagesQuery = conversationsRef.orderByKey().limitToLast(10);
getLastMessagesQuery.addListenerForSingleValueEvent(new ValueEventListener()
{
@Override
public void onDataChange(@NonNull DataSnapshot snap)
{
for (DataSnapshot dataSnapshot : snap.getChildren())
{
Message message = dataSnapshot.getValue(Message.class);
String messageKey = dataSnapshot.getKey();
messageList.add(message);
}
getLastMessageFromListener = false;
setListenerForLastMessage();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError)
{
}
});
答案 0 :(得分:1)
启用Firebase脱机功能时,会发生此问题。
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
要解决,请保持查询的数据库引用已同步,如下所示:
conversationsRef.keepSynced(true);