Firebase:如何为嵌套字段添加索引?
我有一个Firebase:如何为嵌套字段添加索引?,firebase,firebase-realtime-database,firebase-security,Firebase,Firebase Realtime Database,Firebase Security,我有一个locations orders表,如下所示: { "0BW3H9T3R7HJB" : { "orders" : { "01750ea0-4980-4bc4-58b2-988c02324e671478636582396" : { "created_at" : 1478636560000, }, "01750ea0-4980-4bc4-58b2-988c02324e671478636582483" : { "c
locations orders
表,如下所示:
{
"0BW3H9T3R7HJB" : {
"orders" : {
"01750ea0-4980-4bc4-58b2-988c02324e671478636582396" : {
"created_at" : 1478636560000,
},
"01750ea0-4980-4bc4-58b2-988c02324e671478636582483" : {
"created_at" : 1478636560000,
}
}
}
每个location orders节点都有一个带有多个键/对象的orders
节点。这些对象上有一个在处创建的字段
我将此添加到我的数据库规则中:
{
"rules": {
".read": true,
".write": true,
"users": {
".indexOn": "merchantId"
},
"merchants": {
".indexOn": "locations"
},
"locations-orders": {
".indexOn": ["orders/created_at"]
}
}
}
但是,Firebase仍在抱怨我缺少一个索引:
Using an unspecified index. Consider adding ".indexOn": "created_at" at /locations-orders/1JS53G0TT5ZQD/orders to your security rules for better performance
我应该运行一些东西来创建索引吗?还是写错了
==更新===
我更改了文件以查看:
{
"rules": {
".read": true,
".write": true,
"users": {
".indexOn": "merchantId"
},
"merchants": {
".indexOn": "locations"
},
"locations-orders": {
"$location_id": {
".indexOn": ["orders/created_at", "orders/status_updated_at"]
}
}
}
}
但我还是得到了同样的警告:
Using an unspecified index. Consider adding ".indexOn": "created_at" at /locations-orders/1JS53G0TT5ZQD/orders to your security rules for better performance
试试这个:
{
"rules": {
".read": true,
".write": true,
"users": {
".indexOn": "merchantId"
},
"merchants": {
".indexOn": "locations"
},
"locations-orders": {
"orders": {
"$orderid": {
".indexOn": "created_at"
}
}
}
}
}
如果查看数据结构,则在/location order/$orderId
下的处没有创建的订单
{
"rules": {
".read": true,
".write": true,
"users": {
".indexOn": "merchantId"
},
"merchants": {
".indexOn": "locations"
},
"locations-orders": {
"$someid": {
".indexOn": ["orders/created_at"]
}
}
}
}
问题中包含了JSON树和规则的图片。请将它们替换为实际的JSON和文本形式的规则,您可以通过单击Firebase数据库控制台中的导出按钮轻松获得这些内容。将JSON作为文本使其具有可搜索性,允许我们轻松使用它来测试您的实际数据,并在我们的答案中使用它,这通常是一件好事。当然可以@弗兰克万帕夫伦更新!我为$someid
写什么重要吗?不重要。这就像实际代码中的变量名:只要在规则中使用相同的值(此处不需要),实际名称就无关紧要。我不必运行任何命令或任何东西?我更新了它,使其看起来像这样,但它仍然显示当您保存定义错误索引的规则时,会立即创建错误索引。如果您仍然有问题:您能在最小的jsbin中重现它们吗?这将更容易得到一个完整的图片。