你好,我有一个应用来学习成语和歌曲。我正在使用Firestore作为数据库。
实际数据结构:
我想增加每个用户的功能,他们可以知道在演奏时作为一种词汇学到的单词。
- Users
-Vocabulary
-Word1
-wordId
-timesPlayed
-lastTimeAt(unix)
-translation
- Words
-Word
-translation
(more word data)
我认为,每次添加歌曲时,都会触发Firebase函数,该函数将分离歌曲中的所有单词,并验证该单词是否存在于应用程序的通用词汇表中,以及是否未添加。 每次用户播放一首歌曲时,都会将该词添加到他们自己的语言中(仅限于已播放的歌曲),如果该歌曲已经存在,则会记录该歌曲被练习的次数以及日期。最后的实践。
用户词汇表仅在常规词汇表中保留对palbras的引用,因为他们可以对所有用户进行协作编辑。
我遇到的问题是,在Firestore中,每个播放歌曲的用户都编写了大约300个单词的经文,而相比之下,我目前没有此功能(2篇著作)的做法是不可行的,因为有一种方法可以对此进行优化。 / p>
答案 0 :(得分:0)
如果要最大程度地减少写入Firestore的次数。
我要做的是拥有三个不同的对象:
每个对象将以单词的ID作为键。对象2和3表示没有问题,但是,在客户端或运行该对象的云函数上,timesPlayed对象会变得非常昂贵。 (我会在客户端执行此操作。)
您可以将三个对象嵌套在一个词汇表中,并在更新用户文档时使用设置为true的合并选项。
希望有帮助。