首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将不同的节点连接起来,立即使用防火墙观察它们。

将不同的节点连接起来,立即使用防火墙观察它们。
EN

Stack Overflow用户
提问于 2016-12-07 10:48:43
回答 1查看 839关注 0票数 1

我正在尝试使用firebase来做一个示例应用程序,但我不太明白如何检索嵌套的、受宠若惊的数据。

假设我有一个像这样的数据库

代码语言:javascript
复制
 {
        "users": {
            "user-1": {
                "email": "email1",
                "matches": [
                    "match-1",
                    "match-2"
                ]
            },
            "user-2": {
                "email": "email2",
                "matches": [
                    "match-1",
                    "match-2"
                ]
            },
            "user-3": {
                "email": "email3",
                "matches": [
                    "match-2"
                ]
            }
        },
        "matches": {
            "match-1": {
                "name": "Match 1",
                "users": [
                    "user-1",
                    "user-2"
                ]
            },
            "match-2": {
                "name": "Match 2",
                "users": [
                    "user-1",
                    "user-2",
                    "user-3"
                ]
            }
        }
    }

我想得到所有的用户匹配-1。我现在要做的是观察users.user-1。匹配来获取匹配列表,然后观察每个匹配,所以最后的流程是:

  • 观察users.user-1匹配
  • 观察比赛.匹配-1
  • 观察比赛。比赛-2
  • ..。

问题是:我如何优化这个流程?(比如创建类似于sql联接的东西)

我的想法是得到这样的东西

代码语言:javascript
复制
{
    "users": {
        "user-1": {
            "email": "email1",
            "matches": {
                "match-1": {
                    "name": "Match 1",
                    "users": [
                        "user-1",
                        "user-2"
                    ]
                },
                "match-2": {
                    "name": "Match 2",
                    "users": [
                        "user-1",
                        "user-2",
                        "user-3"
                    ]
                }
            }
        }
    }
}

所以我可以立刻观察整个结构。

我在iOS上使用firebase,使用的是快速,但可以随时以您喜欢的任何语言进行回复。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-07 19:03:36

注释中链接的答案是一个答案,但让我们简化一下。让我们创建一个用户节点来存储用户,并创建一个匹配节点来跟踪他们播放的匹配。

然后,我们将执行一个查询来检索与用户-1匹配的内容:

代码语言:javascript
复制
users
  user-1
    name: "some name"
    email: "somename@thing.com"
  user-2
    name: "another name"
    email: "anothername@thing.com"
  user-3
    name: "cool name"
    email: "coolname@thing.com"

然后,匹配节点

代码语言:javascript
复制
matches
  match-1
    name: "Match 1"
    users
        user-1: true
        user-2: true
  match-2
    name: "Match 2"
    users
        user-1: true
        user-2: true
        user-3: true
  match-3
    name: "Match 3"
    users
        user-2: true
        user-3: true

如您所见,我们已经构造了数据以直接处理我们的查询

代码语言:javascript
复制
matchesRef.queryOrdered(byChild: "users/user-1").queryEqual(toValue: true)
                         .observe(.value, with: { snapshot in
     print(snapshot)          
});

快照将包含节点匹配-1和匹配-2,但不包含匹配-3。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41015445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档