如何解决如何通过用户名从firebase中查找用户?
所以我写了一个方法来查看我的 firebase firestore 数据库中的所有用户,它看起来像这样:
usernameTaken: async (name) => {
await db.collection("users").get().then(querySnapshot => {
querySnapshot.forEach(documentSnapshot => {
if (documentSnapshot.data().username === name) {
return true;
}
});
});
return false;
}
我的数据按用户 ID 列出,直接文档字段之一是用户名。正如您可能会说的那样,查看每一个文档以找到匹配的用户名是非常低效的,我想知道是否有办法提高效率?目标是阻止和匹配用户名,因此在我的应用程序中人们没有相同的用户名。任何帮助将不胜感激,谢谢!
解决方法
最好的方法是将 user_id 设为“users”中容器的名称,并使用此名称作为与所述用户相关的任何内容的唯一标识符。 '''
|- users
|-- unique_janedoe
|--- address
|--- email
|-- unique_johndoe
|--- address
|--- email
''' 您的另一个选择是创建一个单独的文件夹,其中包含所有用户名的列表,每次将用户添加到数据库时都会填充该列表。
,在您当前的结构中,您需要使用查询来查找文档:
usernameTaken: (name) => {
return db.collection("users").where("username","==",name).get().then(querySnapshot => {
return !querySnapshot.empty;
});
}
更好的方法是像 dagarcia 在 their answer 中建议的那样更改数据模型,使用用户名作为文档 ID。由于文档 ID 在集合中是唯一的,使用用户名作为文档 ID 会自动保证每个名称也是唯一的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。