firebase - 如何检查用户的数据在哪个集合中?云防火墙
问题描述
如何在 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;
}
}
解决方案
Firestore 中对跨多个集合的搜索支持非常有限:所有集合必须具有相同的名称。
如果您的集合并非全部共享相同的名称,则您需要为每个集合单独查询。在这种情况下,我实际上建议更改您的数据结构,为所有用户提供一个集合,并将他们的角色存储在每个用户的文档中。
推荐阅读
- python - 低波动性投资组合构建
- java - 在 Calendar.getInstance() 模拟上获取 NotAMockException
- android - wordpress 和 android studio 之间的联系
- prometheus - 将布尔度量/表达式转换为计数器
- elasticsearch - 使用管道到管道通信时关闭 Logstash
- python - 在 Django 上测试表单
- c# - 从列表中删除
List 中存在行的位置 - ubuntu - 安装freeradius 2.2.8时生成文件错误#2 eap libeap rlm_eap all modules all src all
- .net - 如何修复 .Net Azure Function App 中的“由于对象的当前状态导致操作无效”错误?
- oracle-adf - 在弹出窗口中显示之前从托管 bean 中读取文本并设置其样式