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

Adm*_*ong 1 nosql firebase firebase-realtime-database

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

我希望获得这些代码的最佳查询和更新功能,并遵循Firebase本身的一些建议以及之前的问题,我提出了以下结构:

Codes
  - Available 
    - 12345 
      - property 1
      - property 2
    - 32124
      - property 1
      - property 2
  - Taken
    - 23456
      - property 1
      - property 2
Users
  - UID
    - Codes
      - 23456
Run Code Online (Sandbox Code Playgroud)

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

我遇到的问题是,为了将代码对象从"可用"移动到"已获取",我必须将其从前者中删除并将其插入到后者中.这是正确的方法吗?我对物理删除数据以移动它感到紧张.

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

Fra*_*len 5

不移动数据可能更容易:

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
Run Code Online (Sandbox Code Playgroud)

这样你就可以轻松地:

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