开发者问题收集

Firebase Cloud Firestore 请求

2020-05-18
156

我有一个 MESSAGERECAP 集合,其中包含每条消息的唯一 ID、消息接收者的 ID、发送者的 ID 以及消息本身。在我的应用程序中,当用户点击好友与其聊天时,我希望聊天活动以他们都发送的消息列表开始。 我这样做了,但显然没有得到预期的结果:

Query query = messageRef.orderBy("mssgId",Query.Direction.DESCENDING); 
// with messageRef a reference to the MESSAGERECAP collection

这是我的数据库的概述

在此处输入图片说明

1个回答

您获取的是整个列表,因为您没有过滤数据,只是对其进行了排序。如果您查看 Firestore 查询文档 (也是由 @FrankVanPuffelen 在您的问题评论中提供的),您会发现您必须使用 .where() 来过滤要检索的数据。

此外,正如@Jay 在评论中指出的那样,您可以使用 复合查询 在查询上创建逻辑 AND 以检索所需的数据。

因此,如果您执行类似操作:

messageRef.where("senderId", "==", [currentUserId])
          .where("receiver_id", "==", [receiverUserId])
          .orderBy("mssgId",Query.Direction.DESCENDING)

执行此查询时,您将获得当前用户发送给相应 ID 的接收用户的所有消息。

Ralemos
2020-05-19