.indexOn 如何与用户和唯一键一起使用?
How does .indexOn works with users and unique keys?
我对 firebase 中的索引规则感到困惑。我有这个数据库,我想在 battery_and_cables
中提取 distance_traveled
。问题是,1
类似于用户自己设置的用户 ID,因此会有所不同。
我在 pyrebase 中使用这段代码来提取 distance_traveled
db.child("mileage_maintenance").order_by_child("distance_traveled").get()
但我明白了
Index not defined, add ".indexOn": "distance_traveled", for path "/mileage_maintenance", to the rules
这是我的数据库:
任何我的规则:
{
"rules": {
".read": true,
".write": true,
"mileage_maintenance": {
"battery_and_cables":{
".indexOn": ["distance_traveled"]
}
},
}
}
有没有什么方法可以通过1
和push
键获得distance_traveled
?
Firebase 实时数据库查询在您运行 查询 位置下的平面节点列表上工作。因此,在您的情况下,查询会考虑 mileage_maintenance
节点的直接子节点(这只是屏幕截图中的节点 1
)。
您可以在规则中使用通配符,例如您的情况:
{
"rules": {
".read": true,
".write": true,
"mileage_maintenance": {
"$id": {
"battery_and_cables":{
".indexOn": ["distance_traveled"]
}
}
}
}
}
如您所见,我在此处为 1
节点添加了一个 $id
级别。现在这意味着您在每个 /mileage_maintenance/$id/battery_and_cables
节点上为每个子节点的 distance_traveled
属性 定义了一个索引。
因此,使用此索引,您可以为 distance_traveled
值查询特定的 /mileage_maintenance/$id/battery_and_cables
路径。但是您不能 运行 仅对 /mileage_maintenance
下的所有 distance_traveled
值进行查询。
如果您需要这样的查询,您将需要 modify/augment 您的数据模型允许它。例如,通过引入 distance_traveled
个节点的平面列表,然后您可以查询:
"distance_traveled": {
"1000000": "1/battery_and_cables/-M01CT...1hMj"
}
或
"distance_traveled": {
"1~battery_and_cables~-M01CT...1hMj": 1000000
}
最后一个模型中的 ~
只是该键中段的单独部分,因为 /
是不允许的。
另见:
- Firebase Query Double Nested
我对 firebase 中的索引规则感到困惑。我有这个数据库,我想在 battery_and_cables
中提取 distance_traveled
。问题是,1
类似于用户自己设置的用户 ID,因此会有所不同。
我在 pyrebase 中使用这段代码来提取 distance_traveled
db.child("mileage_maintenance").order_by_child("distance_traveled").get()
但我明白了
Index not defined, add ".indexOn": "distance_traveled", for path "/mileage_maintenance", to the rules
这是我的数据库:
任何我的规则:
{
"rules": {
".read": true,
".write": true,
"mileage_maintenance": {
"battery_and_cables":{
".indexOn": ["distance_traveled"]
}
},
}
}
有没有什么方法可以通过1
和push
键获得distance_traveled
?
Firebase 实时数据库查询在您运行 查询 位置下的平面节点列表上工作。因此,在您的情况下,查询会考虑 mileage_maintenance
节点的直接子节点(这只是屏幕截图中的节点 1
)。
您可以在规则中使用通配符,例如您的情况:
{
"rules": {
".read": true,
".write": true,
"mileage_maintenance": {
"$id": {
"battery_and_cables":{
".indexOn": ["distance_traveled"]
}
}
}
}
}
如您所见,我在此处为 1
节点添加了一个 $id
级别。现在这意味着您在每个 /mileage_maintenance/$id/battery_and_cables
节点上为每个子节点的 distance_traveled
属性 定义了一个索引。
因此,使用此索引,您可以为 distance_traveled
值查询特定的 /mileage_maintenance/$id/battery_and_cables
路径。但是您不能 运行 仅对 /mileage_maintenance
下的所有 distance_traveled
值进行查询。
如果您需要这样的查询,您将需要 modify/augment 您的数据模型允许它。例如,通过引入 distance_traveled
个节点的平面列表,然后您可以查询:
"distance_traveled": {
"1000000": "1/battery_and_cables/-M01CT...1hMj"
}
或
"distance_traveled": {
"1~battery_and_cables~-M01CT...1hMj": 1000000
}
最后一个模型中的 ~
只是该键中段的单独部分,因为 /
是不允许的。
另见:
- Firebase Query Double Nested