在聊天应用中,我有一个订阅频道的用户对象(例如,每个用户在其文档中包含频道ID列表):
User
Channels
ID 1
ID 7
我希望能够根据用户频道列表(伪代码)订阅频道:
channelsCollection.documentsWhereIn("id",[1,7]).addSnapshotListener...
我找不到实际实现这一目标的任何方法,因此我能够提出的唯一解决方案是维护频道列表中的订阅用户
Channel
Users
UserId1:True
UserId7:True
...
然后订阅
channelsCollection.whereEqualTo("users.id",myId).addSnapshotListener...
缺点是我觉得维护频道文档有点脆弱,最后它是一个javascript对象,很容易被一些错误覆盖。我正在寻找更精细的解决方案。
我正在考虑子集合,但在这里看到我还无法根据它们进行查询。
我认为这还没有得到回答,因为:
What's the best way to get data from collections nested in documents in Firestore? - 不提供仅提取与用户相关的频道/聊天的解决方案
Firestore query subcollections - 提到我无法根据子集合进行查询