【问题标题】:Using an unspecified index. Your data will be downloaded and filtered on the client使用未指定的索引。您的数据将在客户端下载和过滤
【发布时间】:2022-11-16 13:14:28
【问题描述】:

你如何从 firebase 中检索这个?

我正在尝试创建一个跟踪用户移动的应用程序,但我无法从 firebase 获取位置。我试过此代码,但出现以下消息。

private void getEndLocation(){
    databaseReference = FirebaseDatabase.getInstance().getReference().child("User's Location");
    geoFire = new GeoFire(databaseReference);
    geoQuery = geoFire.queryAtLocation(new GeoLocation(adminCurrentLatitude,adminCurrentLongitude),10);
    geoQuery .removeAllListeners();

    geoQuery.addGeoQueryEventListener(new GeoQueryEventListener() {
        @Override
        public void onKeyEntered(String key, GeoLocation location) {
            if(!userFound && requestType){
                userFound = true;
                userID = key;
                Log.d("Location", "onKeyEntered: "+userID);
            }
        }

        @Override
        public void onKeyExited(String key) {

        }

        @Override
        public void onKeyMoved(String key, GeoLocation location) {

        }

        @Override
        public void onGeoQueryReady() {

        }

        @Override
        public void onGeoQueryError(DatabaseError error) {

        }
    });
}

这是我收到的消息:

使用未指定的索引。您的数据将在客户端下载和过滤。考虑将“.indexOn”:“g”在用户位置添加到您的安全和 Firebase 数据库规则中以获得更好的性能

【问题讨论】:

    标签: java android firebase-realtime-database firebase-security geofire


    【解决方案1】:

    对于代码中的查询,您需要在数据库的安全规则中定义一个索引,如下所示:

    {
      "rules": {
        ...
        "User's Location": {
          ".indexOn": "g"
        }
      }
    }
    

    另请参阅 indexing data 和之前的 questions with the same error message 上的 Firebase 文档。

    【讨论】:

      猜你喜欢
      • 2021-11-10
      • 2021-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-21
      • 1970-01-01
      • 2013-08-19
      相关资源
      最近更新 更多