Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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
Json 从firebase中检索对象,该对象以有效的方式在其属性中包含确切的项_Json_Firebase_Performance_Firebase Realtime Database_Xamarin.forms - Fatal编程技术网

Json 从firebase中检索对象,该对象以有效的方式在其属性中包含确切的项

Json 从firebase中检索对象,该对象以有效的方式在其属性中包含确切的项,json,firebase,performance,firebase-realtime-database,xamarin.forms,Json,Firebase,Performance,Firebase Realtime Database,Xamarin.forms,我正在使用Firebase和Xamarin表单部署应用程序。我正试图找出如何获得一个(或多个)符合一个条件的对象。假设我有一个字符集合,每个字符都有不同的属性,比如名称、年龄、城市,最后一个属性是一个字符串数组,表示它们有什么样的工具 例如,在集合中包含以下三个字符: { 'characters': { 'char001': { 'name': '

我正在使用Firebase和Xamarin表单部署应用程序。我正试图找出如何获得一个(或多个)符合一个条件的对象。假设我有一个字符集合,每个字符都有不同的属性,比如名称、年龄、城市,最后一个属性是一个字符串数组,表示它们有什么样的工具

例如,在集合中包含以下三个字符:

{                'characters':
                {
                    'char001': {
                        'name': 'John',
                        "tools":[ "knife", "MagicX", "laser", "fire" ]
                    },
                    'char002': {
                        'name': 'Albert',
                        "tools":[ "MagicX" ]
                    },
                    'char003': {
                        'name': 'Chris',
                        "tools":[ "pistol", "knife", "magicX" ]
                    }
                }
}
我想检索拥有刀和magicX的角色,因此查询结果为:char001和char003

也就是说,我有大量的数据,比如集合中的+10.000个字符,加上每个字符在工具中最多可以有10项

如果属性tools中只有一个字符串,但将tools作为数组,我可以检索对象。我必须迭代抛出每个字符的所有项,并查看其中有多少具有刀,然后使用相同的过程查找具有magicX的对象,然后将两个查询合并,得到结果。就速度而言,这太慢了

我想直接在后端执行,只接收正确的数据

  • 如何在firebase中执行查询?
提前非常感谢你,
干杯。

在Firebase中,这很简单,假设角色是一个集合

如果是这样的话,一种方法是这样构造“charachter”文档:

'char001': {
   name: "John",
   tools: { 
      knife: true,
      MagicX: true,
      laser: true
   }
}
这样,您就可以执行复合相等查询,并使用正在搜索的工具返回所有字符。比如:

db.collection('characters').where('tools.knife', '==', true).where('tools.magicX', '==', true)
请注意,在一个查询中最多可以组合10个相等子句


我希望这能有所帮助,请搜索“firestore复合查询”以获取更多信息。

您的第二个问题与堆栈溢出无关。我建议编辑你的问题,把注意力集中在一个清晰的问题上,否则它可能会被关闭。@DougStevenson谢谢你的建议,我已经编辑好了。谢谢你的输入。我要试试看!