在实时数据库 Firebase 中存储数据的正确结构

Correct Structure for storing data in realtime DB Firebase

我有一个移动应用程序,用户可以在 mobile_number 上注册。当一个用户成功注册后,应用程序会要求访问用户的通讯录权限。用户授予所需权限后,我将用户的联系电话存储到 firebase DB。

稍后如果有新用户注册,我想查看他的哪些联系人已在我的应用程序中注册,并向他们发送应用程序内通知,如下所示:

Your friend/Contact ABC has registered on XYZ app, welcome him/her.

我目前正在以下列格式将数据存储在 firebase 实时数据库中。

contacts/"+registeredUserMobileNo+"/contacts/"+UserContactNumber1);

contacts/"+registeredUserMobileNo+"/contacts/"+UserContactNumber2);

我如何使用当前数据检查他有多少联系人已在我的应用程序中注册?

我可以创建更好的数据库结构吗?

谢谢,

我建议您对数据进行非规范化并创建两个不同的节点:

第一个节点就是您在 post 中提到的节点:

- contacts
   - registerUserId1
       - userContacts
           - userContactNumber1: true
           - UserContactNumber2: true
   - registerUserId2
       - userContacts
           - userContactNumber3: true
           - userContactNumber4: true
           - UserContactNumber2: true

第二个节点将包含 UserContactNumber 的列表(即来自联系人目录的列表),这样您就可以轻松地获取在其中一个 UserContactNumber 时必须向其发送警报的用户成为应用程序的用户。像下面这样:

- userContactNumbers
   - userContactNumber1
       - registerUserId1: true
   - userContactNumber2
       - registerUserId1: true
       - registerUserId2: true
   - userContactNumber3
       - registerUserId1: true
   - userContactNumber4
       - registerUserId1: true

然后,当有新用户注册时,您只需要查询 userContactNumbers 节点,看它是否包含新用户号码,如果是,则相应地向号码列表发送警报。

为了使这两个节点保持同步,您应该使用 update() 方法,如文档中所解释的 here