用于移动子类别的正确 Firebase 数据结构

Proper Firebase Data Structure for Moving Child Categories

我正在开发一个 Firebase 应用程序,它将包含一组代码,这些代码仅供一次性使用,然后将永久绑定到用户。

我想在这些代码上实现最佳查询和更新功能,并根据 Firebase itself and previous questions 的一些建议,我提出了以下结构:

Codes
  - Available 
    - 12345 
      - property 1
      - property 2
    - 32124
      - property 1
      - property 2
  - Taken
    - 23456
      - property 1
      - property 2
Users
  - UID
    - Codes
      - 23456

这使得查询可用代码以及将绑定到用户的代码与其中一个代码相匹配(用于在他们登录后进行验证)变得容易。

我遇到的问题是,为了将代码对象从 "Available" 移动到 "Taken",我必须将其从前者中删除并将其插入到后者中。这是正确的做法吗?我对为了移动数据而物理删除数据感到紧张。

关于如何正确构建此用例的任何建议?

不移动数据可能更容易:

Codes
  12345 
    claimedBy: false
    property 1
    property 2
  32124
    claimedBy: false
    property 1
    property 2
  23456
    claimedBy: '98-12-ad-1a-9c'
    property 1
    property 2
Users
  98-12-ad-1a-9c
    - Codes
      - 23456

这样您就可以轻松地:

  • 显示所有代码:ref.child('Codes')
  • 显示所有可用代码:ref.child('Codes').orderByChild('claimedBy').equalTo(false)
  • 显示每个用户的代码:ref.child('Users').child(auth.uid).child('Codes')