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

时间:2015-09-08 19:47:30

标签: firebase firebase-realtime-database nosql

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

我希望获得这些代码的最佳查询和更新功能,并遵循Firebase itselfprevious questions的一些建议,我提出了以下结构:

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

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

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

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

1 个答案:

答案 0 :(得分: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

这样你就可以轻松:

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