如何指定规则以允许任何人读取特定的键/值对

时间:2019-05-16 02:07:37

标签: firebase firebase-realtime-database firebase-authentication

我试图让任何用户仅看到nameemail参数。

    "users": {
        "kanyesUID": {
            "name": "Kanye West",
            "email": "kwest@gmail.com",
            "sensitive_info": "a"
        },
        "taylorsUID": {
            "name": "Taylor Swift",
            "email": "tswift@gmail.com",
            "sensitive_info": "a"
        },
        "seacrestsUID": {
            "name": "Ryan Seacrest",
            "email": "rseacrest@gmail.com",
            "isAdmin": true
        }
     }

对于以下代码,我应该获得以下输出:

        "kanyesUID": {
            "name": "Kanye West",
            "email": "kwest@gmail.com"
        },
        "taylorsUID": {
            "name": "Taylor Swift",
            "email": "tswift@gmail.com"
        },
        "seacrestsUID": {
            "name": "Ryan Seacrest",
            "email": "rseacrest@gmail.com"
        }
firebase.database().ref('/users/').once('value').then(function(snapshot) {
    print_snapshot_json(snapshot);
});

允许发生这种情况的规则是什么?

1 个答案:

答案 0 :(得分:1)

您不能使用安全规则来执行此操作。您正在尝试使用安全规则作为过滤器,以确定哪些字段将出现在搜索结果中,但是不支持。查询必须能够读取全部,该查询将返回该数据。相反,您可以做的是将每个用户的公共字段和私有字段拆分为单独的顶级节点,以便可以分别查询和保护它们。

有关更多详细信息,请阅读文档,特别是标题为“ rules are not filters”的部分。