【问题标题】:Correct Structure for storing data in realtime DB Firebase在实时数据库 Firebase 中存储数据的正确结构
【发布时间】:2018-07-31 21:08:56
【问题描述】:

我有一个移动应用程序,用户可以在该应用程序上使用 mobile_number 进行注册。当一个用户注册成功时,应用程序会要求用户访问联系人目录权限。用户授予所需权限后,我将用户的联系电话存储到 firebase 数据库。

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

您的朋友/联系人 ABC 已在 XYZ 应用上注册,欢迎他/她。

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

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

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

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

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

谢谢,

【问题讨论】:

    标签: node.js firebase firebase-realtime-database firebase-admin


    【解决方案1】:

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

    第一个节点正是您在帖子中提到的那个:

    - 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 所述。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多