首页 > 解决方案 > 如何检查用户的数据在哪个集合中?云防火墙

问题描述

如何在 Cloud Firestore 集合中搜索用户的电子邮件?我有 3 个集合,在登录页面中,我想获取输入的电子邮件并对照我在云中的三个集合进行检查,一旦在其中一个集合中找到电子邮件,它将导航到某个页面,具体取决于哪个用户的电子邮件保存在集合中。

该应用程序是使用颤振和飞镖开发的。

按下按钮时,下面的代码片段位于登录页面中。

if (_key.currentState.validate()) {
                _key.currentState.save();
                try {
                  final userlogin = FirebaseAuth.instance
                      .signInWithEmailAndPassword(
                          email: _email, password: _password);
                } on FirebaseAuthException catch (e) {
                  switch (e.code) {
                    case 'invalid-email':
                     ScaffoldMessenger.of(context).showSnackBar(
                      SnackBar(content: Text("Invalid Email")));
                      break;
                    case 'user-disabled':
                     ScaffoldMessenger.of(context).showSnackBar(
                      SnackBar(content: Text("Disabled!")));
                      break;
                    case 'user-not-found':
                     ScaffoldMessenger.of(context).showSnackBar(
                      SnackBar(content: Text("User not found")));
                      break;
                    case 'wrong-password':
                     ScaffoldMessenger.of(context).showSnackBar(
                      SnackBar(content: Text("Wrong password.")));
                      break;
                  }
                }

标签: firebaseflutterdartgoogle-cloud-firestore

解决方案


Firestore 中对跨多个集合的搜索支持非常有限:所有集合必须具有相同的名称。

如果您的集合并非全部共享相同的名称,则您需要为每个集合单独查询。在这种情况下,我实际上建议更改您的数据结构,为所有用户提供一个集合,并将他们的角色存储在每个用户的文档中。


推荐阅读