如何通过用户名从 firebase 中查找用户?
How to find a user from firebase by username?
所以我写了一个方法来查看我的 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
|-- 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 自动保证每个名称也是唯一的。
所以我写了一个方法来查看我的 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
|-- 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 自动保证每个名称也是唯一的。