我想从每个用户名值中搜索我的用户群 . 从我在网上看到的人们经常会返回所有用户,然后在表格视图中过滤它们,但这似乎不实际也不可行 . 我的想法是查询数据并返回指数级较小的值数组,但我在使用提供的查询方法时遇到问题 .
How do I query a specific aspect of my database?
How do I structure my code so that it's viable ;不加载每个用户,一次最多10个 .
非常感谢任何建议,资源和链接 .
EDIT:
我做了一些研究,看起来Firebase附带了一些内置的查询方法......到目前为止,这是我试图用下面的代码测试它以打印出以I开头的用户,但我无法得到它可以在控制台中打印任何用户
ref.queryOrderedByKey().queryStarting(atValue: "I").queryEnding(atValue: "I\u{f8ff}")
.observe(.childAdded, with: { snapshot in
print(snapshot.key)
})
1 回答
有许多解决方案,并且经常加载所有用户数据的数据太多 .
这是一个典型的用户节点
一种选择是迭代每个用户节点,一次一个,以检索用户名 . 这完全避免了庞大的数据集 . 我们将使用.childAdded事件来加载每个并存储在数组中
第二种选择是将用户名存储在完全不同的节点中,这显着减少了“混乱”,因为其余数据保留在主用户节点中
正如您可以看到的这种结构,即使有数千个名称,它只是文本占用空间非常小 .
另一种选择是使用.startingAt和.endingAt一次加载X个用户,并迭代返回的用户以获取每个名称 . 在这种情况下,我们希望所有用户以A开头并以M结尾...抱歉Worf .
最后一个示例以用A开头的用户名开头,用以M结尾的用户名结束非常高的unicode字符,这使得它包含所有以M开头的名称