小编bhe*_*h90的帖子

FireStore - 如何绕过数组“不包含”查询

经过一些研究,很明显我不能使用 FireStore 来查询给定数组不包含的项目。有没有人对此用例有解决方法?...

用户注册后,应用程序会获取一堆卡片,每张卡片在 FireStore 中都有一个对应的“卡片”文档。用户与卡片交互后,卡片文档将用户的 uid 添加到字段数组中(例如:usersWhoHaveSeenThisCard: [userUID]),“user”文档将卡片的 uid 添加到字段数组中(例如:cardsThisUserHasSeen: [cardUID]) )。“user”文档位于“user”集合中,“card”文档位于“card”集合中。

目前,我想获取用户未与之交互的所有卡片。但是,这是有问题的,因为我只知道用户与之交互的卡片,因此 .whereField(usersWhoHaveSeenThisCard, arrayContains: currentUserUID) 将不起作用,因为我需要一个不存在的“arrayDoesNotContain”语句。

最后,用户不能拥有卡片,因此我无法在卡片文档中创建真/假布尔字段(例如:userHasSeenThisCard:false)并根据该条件进行搜索。

我能想到的唯一解决方案是在卡片文档上创建一个新的字段数组,其中包含所有没有看过卡片的用户(例如:usersWhoHaveNotSeenThisCard:[userUID]),但这意味着每个注册的用户都会必须将他们的 uid 写入 1000 多个卡文件,这会吃掉我的数据。

我可能只是不走运,但我希望更了解 NOSQL/FireStore 的人可以提供一些见解。

// If any code sample would help, please let me know and I'll update - I think this is largely conceptual as of now
Run Code Online (Sandbox Code Playgroud)

database nosql firebase swift google-cloud-firestore

5
推荐指数
1
解决办法
2377
查看次数