所以我写了一个方法,在react native中查看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列出,其中一个直接的文档字段是username。正如你所说,查看每一个文档以找到匹配的用户名是非常低效的,我想知道是否有办法提高效率?目标是阻止和匹配用户名,这样在我的应用程序中人们就不会有相同的用户名。任何帮助都将不胜感激,谢谢!
实现这一点的最佳方法是将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在回答中的建议更改数据模型,使用用户名作为文档ID。由于文档ID在集合中是唯一的,因此使用用户名作为文件ID也会自动确保每个名称也是唯一的。