首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化数据模型修复

优化数据模型修复
EN

Stack Overflow用户
提问于 2018-10-04 03:11:42
回答 1查看 109关注 0票数 0

你好,我有一个用歌曲学习习语的应用程序。我使用Firestore作为我的数据库。

实际数据结构:

  • 用户
    • (用户数据)

  • 歌曲
    • (歌曲资料)
    • 歌词(词组排列短语:‘’,startTime:…)

  • 播放(存储用户每次播放歌曲的数据)
    • 得分
    • SongID

我想添加的功能,每个用户可以知道什么单词,而发挥作为一种词汇。

代码语言:javascript
复制
- Users
    -Vocabulary
       -Word1
         -wordId
         -timesPlayed
         -lastTimeAt(unix)
         -translation
- Words
    -Word
      -translation
      (more word data)

我认为每次添加歌曲时,都会触发一个Firebase函数,该函数将分隔歌曲中的所有单词,并验证该单词是否存在于应用程序的一般词汇表中,以及是否未添加。每当用户播放一首歌曲时,该词就会添加到他们自己的语言中(仅在已播放的歌曲中),如果已经存在,则有练习次数和最后一次练习的日期。

用户的词汇表在一般的词汇表中只保留对棕榈树的引用,因为他们可以对所有用户进行协作编辑。

我遇到的问题是,许多经文都是用Firestore制作的,每个播放一首歌的用户大约有300个单词,与我目前没有这个功能(2篇文章)相比,这是一种优化的方法。

EN

回答 1

Stack Overflow用户

发布于 2018-10-04 06:16:34

如果您想将写入Firestore的文章数量最小化。

我要做的是有三个不同的目标:

  1. timesPlayed
  2. lastTimeAt(unix)
  3. 翻译

然后,每个对象都将该单词的id作为键。对象二和对象三个没有问题,但是,timesPlayed对象在客户端或运行它的云函数上会变得安静、昂贵。(我会在客户中这样做)。

您可以将三个对象嵌套在一个词汇表中,并在更新用户文档时使用合并设置为true的选项。

希望能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52638419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档