2
我想找到一种方法,我可以在我的应用程序中查询用户。例如,如果我的用户想要搜索用户以将其添加为朋友。我想我可以将所有用户保存在Firebase数据库中,然后在数据库中执行查询,但看起来效率很低(并且必须有一个更简单的内置方法才能完成)。firebase swift - 用户查询
我想找到一种方法,我可以在我的应用程序中查询用户。例如,如果我的用户想要搜索用户以将其添加为朋友。我想我可以将所有用户保存在Firebase数据库中,然后在数据库中执行查询,但看起来效率很低(并且必须有一个更简单的内置方法才能完成)。firebase swift - 用户查询
“.indexOn”是您的解决方案!
如果你构造你的日期如下,你将能够查询用户!在这里您可以在full_name和reversed_full_name上查询用户。你可以提供你想要查询的任何一个孩子。例如,您可以在人员下添加电子邮件字段,然后在“.indexOn”中添加“电子邮件”!
"people": {
".indexOn": ["_search_index/full_name", "_search_index/reversed_full_name"],
".read": true,
"$uid": {
".write": "auth.uid === $uid",
"full_name": {
".validate": "newData.isString()"
},
"profile_picture": {
".validate": "newData.isString()"
},
"posts": {
"$postId": {
".validate": "newData.val() === true && newData.parent().parent().parent().parent().child('posts').child($postId).exists()"
}
},
"_search_index": {
"full_name": {
".validate": "newData.isString()"
},
"reversed_full_name": {
".validate": "newData.isString()"
}
},
"following": {
"$followedUid": {
".validate": "newData.parent().parent().parent().parent().child('followers').child($followedUid).child($uid).val() === true" // Makes sure /followers is in sync
}
}
}
希望这会有所帮助。以下是从Firebase提供的整个安全规则的链接https://github.com/firebase/friendlypix/blob/master/web/database-rules.json
为什么效率低下?如果您有用户列表并且您想执行搜索,则查询必须由某人进行。魔术师不存在:D – lubilis
你总是可以猜到,如果你是正确的,每次都是O(1) – rigdonmr
我的问题是如果有用户查询,就像解析中的一个你可以创建查询找到一个用户(使用ID,用户名或电子邮件)。这是否存在于Firebase中,或者是否需要将所有用户放在实时数据库中,然后在此数据库中进行查询。 –