Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.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
Firebase好友列表关系_Firebase_Unity3d_Firebase Realtime Database - Fatal编程技术网

Firebase好友列表关系

Firebase好友列表关系,firebase,unity3d,firebase-realtime-database,Firebase,Unity3d,Firebase Realtime Database,我需要显示我朋友的状态。 我找到的解决方案如下 方法1:-------------- users: USER2 name: Soner isonline : true friendlist USER1:USER1 USER1 name: mahmut isonline: false friendlist: USER2_ID:USER2_ID 结构 friendlist

我需要显示我朋友的状态。 我找到的解决方案如下

方法1:--------------

users:
   USER2
      name: Soner
      isonline : true
        friendlist
           USER1:USER1
   USER1
      name: mahmut
      isonline: false
      friendlist:
         USER2_ID:USER2_ID
结构

friendlist:
  USER1_ID
    USER2_ID
      name: Soner
      id: USER2_ID

users:
  USER2
      name: Soner
      isonline : true
   USER1
      name: mahmut
      isonline: false
代码

方法2-------

users:
   USER2
      name: Soner
      isonline : true
        friendlist
           USER1:USER1
   USER1
      name: mahmut
      isonline: false
      friendlist:
         USER2_ID:USER2_ID
代码:

我应该用哪种方法? 哪一个是对的?
有什么建议吗?

您通常会选择第一个选项,因为Firebase实时数据库的一个常见建议是保持数据结构浅而平。我经常这样解释:将每个实体类型的节点放在它们自己的顶级列表/节点下。在不同的顶级列表下,然后使用相同的键,这允许您加入每个列表中的数据

这有很多原因,所以我将在下面包括一些链接,但一个非常直接的原因是,你可能希望在应用程序中显示每个人的在线状态,而不允许所有用户阅读彼此的好友列表。因为Firebase总是加载完整的节点,所以对于第二个数据结构,这是不可能的

另见:

  • 经典的博客文章
  • 第二部分,特别是关于
  • 客户端连接并不像许多开发人员想象的那么慢,因为

避免问
哪一个是正确的?
因为从来没有一个正确的解决方案。这使您的问题以意见为基础,可能会被关闭。
 firebase.ref(users).orderbychield(friendlist/UserId).equalto(USER1_ID);

//RESULT soner is online