【问题标题】:Firebase Database Rules Using an unspecified index使用未指定索引的 Firebase 数据库规则
【发布时间】:2017-10-08 10:49:58
【问题描述】:

我正在为一项看似非常微不足道的任务而苦苦挣扎。执行简单查询时,我从 Firebase 收到以下警告:

查询:

admin.database().ref('/dispatch/')
    .orderByChild('shipmentKey')
    .equalTo(shipmentKey)
    .once('value')
    .then(

警告:

FIREBASE 警告:使用未指定的索引。考虑将 /dispatch 中的 ".indexOn": "shipmentKey" 添加到您的安全规则中以获得更好的性能

我的数据库如下所示:

我的 database.rules.json 看起来像这样:

{
  "rules": {
    "dispatch": {
      ".indexOn": "shipmentKey"
    }
  }
}

并且也尝试过:

{
  "rules": {
    "dispatch": {
      ".indexOn": ["shipmentKey"]
    }
  }
}

我已经阅读了有关此主题的所有其他 stackoverflow 问题,并且似乎无法摆脱我们的项目的这个警告,任何帮助将不胜感激。


2017 年 6 月 22 日更新

我已经解决了这个问题,而且非常简单。事实证明,firebase deploy 实际上并没有部署数据库规则,因此 database.rules.json 没有被上传。我只是运行了以下命令:

firebase deploy --only database

现在一切正常!感谢 Bob Snyder 帮助指出这一点。希望这对其他人有帮助!

【问题讨论】:

  • 您的规则看起来不错。您确定它们对数据库有效吗?当您在 Firebase 控制台中查看规则时,是否看到您发布的规则?
  • 他们不在那里 Bob,不知道为什么,有什么想法吗?
  • 我直接在 Firebase 控制台中编辑我的规则。您是否使用Firebase CLI 部署您的?鉴于您的规则很简单,您可以尝试使用 Firebase 控制台更新它们,看看是否能解决问题。我怀疑会的。不知道为什么 CLI 可能不适合您——没有使用过。

标签: firebase firebase-realtime-database firebase-security


【解决方案1】:

您需要将所有索引放在方括号中,如果您有多个索引,则用逗号分隔。

{
  "rules": {
    "dispatch": {
      ".indexOn": ["shipmentKey"]
    }
  }
}

【讨论】:

  • 谢谢布拉德利,我也试过了,还是不行:(
猜你喜欢
  • 2021-01-14
  • 1970-01-01
  • 2020-04-13
  • 2016-12-29
  • 1970-01-01
  • 2021-12-31
  • 2021-02-17
  • 2017-12-14
相关资源
最近更新 更多