我在Firebase中有一个具有以下结构的数据库:

{
  "chats" : {
    "-L-hPbTK51XFwjNPjz3X" : {
      "lastMessage" : "Hello!",
      "timestamp" : 1512590440336,
      "title" : "chat 1",
      "users" : {
        "Ol0XhKBksFcrYmF4MzS3vbODvT83" : true
      }
    }
  },
  "messages" : {
    "-L-hPbTK51XFwjNPjz3X" : {
      "-L-szWDIKX2SQl4YZFw9" : {
        "message" : "Hello!",
        "timestamp" : 1512784663447,
        "userId" : "Ol0XhKBksFcrYmF4MzS3vbODvT83"
      }
    }
  },
  "users" : {
    "Ol0XhKBksFcrYmF4MzS3vbODvT83" : {
      "chats" : {
        "-L-hPbTK51XFwjNPjz3X" : true
      },
      "email" : "mm@gmail.com",
      "name" : "mm"
    }
  }
}

我的代码:

Database.database().reference().child("chats")
  .queryOrdered(‌​byChild: "users/(userId)").queryEqual(toValue: true).observe(.value, with: { snapshot in .... }

当我尝试聊天成员或用户聊天时,它会显示以下警告:

  • 使用未指定的索引 . 您的数据将在客户端上下载和过滤 . 考虑在/ users处将“.indexOn”:“chats / -L-hPbTK51XFwjNPjz3X”添加到您的安全规则中以获得更好的性能 .

  • 使用未指定的索引 . 您的数据将在客户端上下载和过滤 . 考虑在/ chats中添加“.indexOn”:“users / Ol0XhKBksFcrYmF4MzS3vbODvT83”以获得更好的性能 .

我找到了很多解决方案,但对我来说一切正常 . 我想在我的数据库中定义IndexOn规则,你能帮助我吗?