Firebase 嵌套索引规则
Firebase nested indexing rules
我想通过 shopId 订购,但它 returns:
"error" : "Index not defined, add ".indexOn": "shopId", for path "/Products", to the rules".
如有任何帮助,将不胜感激!
规则:
{
"rules": {
".read": "now < 1609966800000", // 2021-1-7
".write": "now < 1609966800000", // 2021-1-7
"Products":{
"Records":{
".indexOn":["shopId"]
}
}
}
}
Pyrebase 代码:
result = db.child("Products").order_by_child("shopId").equal_to(shopId).get()
Firebase 实时数据库只能过滤您 运行 查询的 直接 子节点。您 order/filter 的值必须位于每个 direct 子节点下的固定路径。
在您的数据结构中,您似乎有两个未知键:UID
和 unique_recordid
。这意味着您无法从 Products
.
查询 shopId
您可以查询单个用户的记录:
db.child("Products").child("UID of a specific").child("Records")
.orderByChild("shopId").equalTo("value of shopId")
但是您不能对所有 Products
执行相同的查询,因为 shopId
属性 的路径对于 [=15= 的所有子节点都不相同].
另见 Firebase Query Double Nested
如果您想查询具有特定 shopId
的记录,您需要在数据库中有一个 flat 列表,其中包含这些节点。
Records: {
"recordid1" : {
uid: "...",
productId: "...".
...
},
"recordid1" : {
uid: "...",
productId: "...".
...
}
}
然后您可以在此数据上查询 productId
并查找其他数据,包括现在为每条记录复制的 UID。
我想通过 shopId 订购,但它 returns:
"error" : "Index not defined, add ".indexOn": "shopId", for path "/Products", to the rules".
如有任何帮助,将不胜感激!
规则:
{
"rules": {
".read": "now < 1609966800000", // 2021-1-7
".write": "now < 1609966800000", // 2021-1-7
"Products":{
"Records":{
".indexOn":["shopId"]
}
}
}
}
Pyrebase 代码:
result = db.child("Products").order_by_child("shopId").equal_to(shopId).get()
Firebase 实时数据库只能过滤您 运行 查询的 直接 子节点。您 order/filter 的值必须位于每个 direct 子节点下的固定路径。
在您的数据结构中,您似乎有两个未知键:UID
和 unique_recordid
。这意味着您无法从 Products
.
shopId
您可以查询单个用户的记录:
db.child("Products").child("UID of a specific").child("Records")
.orderByChild("shopId").equalTo("value of shopId")
但是您不能对所有 Products
执行相同的查询,因为 shopId
属性 的路径对于 [=15= 的所有子节点都不相同].
另见 Firebase Query Double Nested
如果您想查询具有特定 shopId
的记录,您需要在数据库中有一个 flat 列表,其中包含这些节点。
Records: {
"recordid1" : {
uid: "...",
productId: "...".
...
},
"recordid1" : {
uid: "...",
productId: "...".
...
}
}
然后您可以在此数据上查询 productId
并查找其他数据,包括现在为每条记录复制的 UID。