Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Firebase实时数据库:如何在键值对上正确索引 问题:_Java_Android_Json_Firebase_Firebase Realtime Database - Fatal编程技术网

Java Firebase实时数据库:如何在键值对上正确索引 问题:

Java Firebase实时数据库:如何在键值对上正确索引 问题:,java,android,json,firebase,firebase-realtime-database,Java,Android,Json,Firebase,Firebase Realtime Database,我有一个Firebase实时数据库: { "groupUsers" : { "group1key" : { "user1key" : "admin" }, "group2key" : { "user1key" : "admin", "user2key" : &qu

我有一个Firebase实时数据库:

{      
  "groupUsers" : {
    "group1key" : {
      "user1key" : "admin"
    },
    "group2key" : {
      "user1key" : "admin",
      "user2key" : "readonly",
      "user3key" : "readwrite"
    }
  }
}
在我的安卓应用程序中,我这样查询

DatabaseReference ref = FirebaseDatabase.getInstance().getReference("groupUsers");
ref.orderByChild(auth.getCurrentUser().getUid()).startAt("").addValueEventListener() {...}
这会产生警告:

使用未指定的索引。考虑添加“.Noxon”…更改您的安全性和Firebase数据库规则以获得更好的性能

如何正确索引?当数据不断增长时,我担心我的应用程序在查询未编入索引的数据时会变得非常慢

背景 我已尝试在规则文件中索引这些值:

".indexOn": ".value"
但是,只有当数据是标量,但它们是键值对时(user1key:“admin”)

我不能像这样在规则文件中添加索引:

".indexOn": ["user"]
{ "groupUsers" : {
    "group1key" : {
      "name" : "user1"
    }        
  }
}
因为这需要一个常量属性名,如下所示:

".indexOn": ["user"]
{ "groupUsers" : {
    "group1key" : {
      "name" : "user1"
    }        
  }
}
但我有一些像这样的名字

"user1key" : "admin",
"user2key" : "readonly",
"user3key" : "readwrite"

没有办法为这种结构预先创建索引。在我的回答中,我已经介绍了这种类型的结构,而新的Firestore文档(在这方面的工作方式类似)甚至有一个

建议以允许在另一个方向进行查找的方式存储数据。使用当前结构,您可以高效地查找组中的用户。要同时允许查找用户的组,请添加以下结构:

{      
  "usersGroups" : {
    "user1key" : {
      "group1key" : "admin",
      "group2key" : "admin"
    },
    "user2key" : {
      "group2key" : "readonly",
    },
    "user3key" : {
      "group2key" : "readwrite"
    }
  }
}