Firebase Java Android中的OR子句

Ray*_*újo 5 java android where firebase

有谁知道我可以在firebase中的where子句中执行常见的“ OR”操作?

我需要在查询中执行此操作,因为我正在将查询发送到适配器。因此,我的意思是,我无法添加侦听器并检查一个值,然后再检查另一个值。我需要在查询中指向该结果的完整查询。

我所拥有的是这样的:

chat1:
   user1Id: "1"
   user2Id: "2"
   bothUsers: "1_2"

chat2:
   user1Id: "2"
   user2Id: "4"
   bothUsers: "2_4"
Run Code Online (Sandbox Code Playgroud)

我需要获取ID为“ 2”的用户的所有聊天记录。我正在尝试像这样的查询:

userLogged = 2;
Query queryRef = firebase.orderByChild("user2Id").equalTo(userLogged);
Run Code Online (Sandbox Code Playgroud)

但是,只有在用户2处于user2Id位置时,它才会获得聊天。但是在上面的示例中,当用户2位于user1Id(chat2)中时,它将不会获得。我需要得到它。我怎样才能做到这一点?

Fra*_*len 3

在 NoSQL 数据库中,您经常需要按照应用程序需要的方式对数据进行建模(请参阅本文以获得关于在 NoSQL 数据库中,您通常必须按照应用程序需要的方式对数据进行建模(有关NoSQL 数据建模)。因此,如果您需要特定用户的所有聊天列表,请存储该列表:

/userChats
  user1Id
    chat1: true
  user2Id
    chat1: true
    chat2: true
  user4Id
    chat2: true
Run Code Online (Sandbox Code Playgroud)

这个过程称为非规范化,我在上面链接的文章、关于结构化数据的 Firebase 文档以及这篇博文中对此进行了介绍。