如何在颤动的社交媒体应用程序中过滤出匹配的用户名来自 Firestore 数据库

Posted

技术标签:

【中文标题】如何在颤动的社交媒体应用程序中过滤出匹配的用户名来自 Firestore 数据库【英文标题】:How to filter out matching usernames form firestore database in flutter social media application 【发布时间】:2021-06-18 03:25:24 【问题描述】:

所以我在 Flutter 的帮助下创建了一个社交媒体应用程序。在搜索用户页面中,我创建了一个页面,用户可以使用他们的个人资料名称搜索他们的朋友。在这我使用了:-

未来 allUsersProfile = FirebaseFirestore.instance.collection("users").where("profileName", isGreaterThanOrEqualTo: str).get();

通过这个我得到所有匹配的配置文件名称。

但是当我输入他们的姓时,他们没有结果。

我还想将配置文件名称转换为小写然后匹配。

我还希望,如果搜索名称介于保存的配置文件名称之间(例如:- 我想从“Harsh”中搜索“arsh”,我找不到结果。 ) 那么它也应该给出这个特定的结果,

所以我想知道大型社交媒体公司如何搜索用户。

谁能帮帮我。

提前致谢

【问题讨论】:

【参考方案1】:

假设您将 profileName 存储在同一字段中(包括名字和姓氏)。即,在您的 Firebase 用户文档中,profileName 结合了名字和姓氏。您需要执行以下操作:

1- 在您的 Firebase users 集合中,为每个文档存储一个名为“searchName”之类的新字段。

2- 存储用户信息时,使用此代码将profileName 转换为searchName

String profileName = 'Huthaifa Muayyad`;
String searchName = profileName.toLowerCase().replaceAll(' ', ''); 
//The .toLowerCase method converts it all to lower case
//The replaceAll, removes the whitespaces. 
//Notice the difference between  (' ', ''). 
//This will result in Huthaifa Muayyad => huthaifamuayyad

3- 创建用户时,将这两个字段与所有其他信息一起保存在 firebase 中。

4- 假设 str 是您从搜索字段中获得的输入,请将您的 Firebase 查询修改为如下所示:

Future allUsersProfile = FirebaseFirestore.instance.collection("users").where("searchName", isGreaterThanOrEqualTo: str.toLowerCase().replaceAll(' ', '')).get();

这应该可以解决您的问题。

【讨论】:

非常感谢,但是如果我想从“Harsh”中搜索“arsh”,我找不到结果。? 您的问题中没有提到这一点,因为您说您的搜索正在搜索名字。 是的,我没有说。你能帮我解决这个问题吗?

以上是关于如何在颤动的社交媒体应用程序中过滤出匹配的用户名来自 Firestore 数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何在社交媒体应用中阻止 Firebase 上的用户?对于 iOS

过滤 Streambuilder/listviewBuilder 颤动

如何使用 MERNG 实现社交媒体提要?

如何在颤动中动态创建和显示弹出菜单?

如何从社交媒体获取数据以使用机器学习对其进行分析?

如何在颤动中从导航器堆栈中弹出最后三个路由