我从Firestore收集了5,000个艺术家,我希望将它们作为可搜索的下拉列表加载到我的应用程序中。每个用户在每次页面加载时执行此操作的成本很高。我每月有10,000个活跃用户。
我尝试了Algolia,但是该网站上的用户数量使其成为非常昂贵的选择。 Firestore可以使每个页面加载5000条记录。我的想法是将所有艺术家的姓名和ID存储在Firestore中的单个文档数组中,这样每页加载的成本仅为5,000,而每页加载成本仅为1。然后,在选择“歌手”时加载其他数据。
[ "Josse De Pauw", "Eva Van Der Gucht", "Filip Peeters" ]
我希望通过这种方法每天可以节省成千上万的文档读取次数。唯一增加的麻烦是在客户端执行操作。但是,这并不太麻烦。我希望对别人在做什么有所了解。我应该考虑在MySQL中存储一些数据吗?
答案 0 :(得分:3)
如果您想使用更简单的方法,而不是数组,可以在单个文档中为所有艺术家使用键值对。每个文档的限制为1MB,因此即使有5,000个艺术家,您也应该在限制之内。
db.collection('artists').doc(_all).set({
uniqueId: 'Artist Name',
uniqueId2: 'Second Artist Name',
})
然后,一旦您检索文档,就可以使用Object.values()
或Object.entries()
来提取名称和/或键
如果您想要一个更灵活的解决方案,则可以使用云功能将特定查询或文档集合的最新版本保存在Firebase实时数据库或其他数据库(如Redis)中。这是一篇文章,解释了后者的用法
https://thecloudfunction.com/blog/firebase-cloud-functions-and-redis/