firebase - 如何指定规则以允许任何人读取某个键/值对
问题描述
我试图让任何用户只看到name
andemail
参数。
"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);
});
需要什么规则才能让这种情况发生?
解决方案
您不能使用安全规则执行此操作。您正在尝试使用安全规则作为过滤器来确定哪些字段将出现在搜索结果中,但这不受支持。查询必须能够读取查询将返回的所有数据。您可以做的是将每个用户的公共和私有字段拆分为单独的顶级节点,以便可以单独查询和保护它们。
有关更多详细信息,请阅读文档,特别是标题为“规则不是过滤器”的部分。
推荐阅读
- c - 在C中打印指向链表的双指针
- android - 如何在 AppBarLayout Android 中的 SearchView 的查询文本中删除下划线
- node.js - 通过在表格中打印来读取实时 Firebase 数据库的问题
- python - 拆分列 Pandas
- python-3.x - 如何从数据框中获取 1000 条记录并使用 PySpark 写入文件?
- android - 如何将来自服务器的数据显示到android中的回收器视图中
- python - 嵌套列表中所有元素的 Python 集
- sql-server - 在较新的 SQL 版本上执行旧的 SSIS 包
- python - 访问作为键 Python 的值的嵌套字典
- c++ - MB_ICONASTERISK 的定义存储在哪里?