【发布时间】:2022-02-19 08:37:03
【问题描述】:
我在实时数据库中有以下结构:
我已经阅读了一些关于 SO 的问题,认为这是可能的,有些人说这是不可能的,所以我对这是否可以做到有点困惑,但是就这样吧。
我有多个成员(大约 200 个),我想只返回那些 mStatus == true 的成员。
我尝试这样做:
const dbRef = ref(db, `organization/${org}/members`);
const queryConstraints = [orderByChild("mStatus"), equalTo("value")]
get(query(dbRef, ...queryConstraints)).then((snapshot) => {
if(snapshot.exists()) {
console.log(snapshot.val());
} else {
console.log('No data available');
}
})
return 为 null 这里是我使用的安全规则:
"rules": {
".read": true,
".write": true,
"members": {
".indexOn": ["mStatus"]
}
}
我将如何运行此查询?
【问题讨论】:
-
为了运行该查询,您确实需要在安全规则中定义一个索引。该过程在您已链接的文档中进行了描述。如果您难以完成这项工作,请显示您尝试过的安全规则以及完整错误消息,而不仅仅是其中的一部分。
-
请编辑您的问题并添加弗兰克要求的信息,也请回复@。
-
感谢您的评论!我深入研究了这个并使用恐龙示例阅读了该页面我添加了安全规则(如更新的代码中所示)规则是否需要成为完整路径我得到了 null @FrankvanPuffelen
-
@AlexMamo 请见上文
-
您添加的
".indexOn": ["mStatus"]根据每个子节点的mStatus属性在members下创建一个索引。所以乍一看还不错。members是你数据库根目录下的一个节点吗?
标签: javascript firebase-realtime-database