【问题标题】:Optimize data model Firestore优化数据模型 Firestore
【发布时间】:2018-10-04 03:11:42
【问题描述】:

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

实际数据结构:

  • 用户
    • (用户数据)
  • 歌曲
    • (宋数据)
    • 歌词(短语数组 [phrase:'', startTime: ...])
  • Plays(存储用户每次播放歌曲的数据)
    • 得分
    • 歌曲ID

我想增加每个用户在玩时可以知道所学单词的功能。

- Users
    -Vocabulary
       -Word1
         -wordId
         -timesPlayed
         -lastTimeAt(unix)
         -translation
- Words
    -Word
      -translation
      (more word data)

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

用户的词汇表只保留通用词汇表中对 palbras 的引用,因为他们可以对所有用户进行协作编辑。

我遇到的问题是,在 Firestore 中为每个播放歌曲的用户制作了大约 300 个单词,而我目前在没有此功能的情况下所做的(2 篇文章)是 demadas,有一种方法可以优化这一点。

【问题讨论】:

    标签: firebase database-design google-cloud-firestore


    【解决方案1】:

    如果您想尽量减少写入 Firestore 的次数。

    我要做的是拥有三个不同的对象:

    1. 播放次数
    2. lastTimeAt(unix)
    3. 翻译

    然后每个对象都会以单词的 id 作为键。对象 2 和 3 没有问题,但是,timesPlayed 对象在客户端或运行它的云函数上会变得非常昂贵。 (我会在客户端做)。

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

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2018-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-20
      • 1970-01-01
      • 2011-07-04
      • 2017-10-30
      相关资源
      最近更新 更多