Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在实时数据库Firebase中存储数据的正确结构_Node.js_Firebase_Firebase Realtime Database_Firebase Admin - Fatal编程技术网

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

Node.js 在实时数据库Firebase中存储数据的正确结构,node.js,firebase,firebase-realtime-database,firebase-admin,Node.js,Firebase,Firebase Realtime Database,Firebase Admin,我有一个手机应用,用户可以在上面注册手机号码。当一个用户注册成功时,应用程序请求用户访问联系人目录的权限。在用户给出所需的权限后,我将用户的联系号码存储到firebase DB 稍后,如果新用户注册,我希望查看他的哪些联系人已在我的应用程序中注册,并向他们发送应用程序内通知,如下所示: - userContactNumbers - userContactNumber1 - registerUserId1: true - userContactNumber2

我有一个手机应用,用户可以在上面注册手机号码。当一个用户注册成功时,应用程序请求用户访问联系人目录的权限。在用户给出所需的权限后,我将用户的联系号码存储到firebase DB

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

- userContactNumbers
   - userContactNumber1
       - registerUserId1: true
   - userContactNumber2
       - registerUserId1: true
       - registerUserId2: true
   - userContactNumber3
       - registerUserId1: true
   - userContactNumber4
       - registerUserId1: true
您的朋友/联系人ABC已在XYZ应用程序上注册,欢迎他/她

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

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

contacts/"+registeredUserMobileNo+"/contacts/"+UserContactNumber2);
我如何使用当前数据检查他有多少联系人已在我的应用程序中注册

我能创建一个更好的数据库结构吗


谢谢,

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

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

- 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()
方法,如文档中所述