Firebase Firestore邮箱查重查询结果异常,如何修复?
问题修复方案
你的代码核心问题是Firestore查询条件的参数顺序完全搞反了,Firestore的where方法语法是where(字段名, 操作符, 匹配值),而你把输入的邮箱内容当成了字段名,去和字符串'DbEmail'做对比,这根本查不到数据库里的邮箱记录。
修复后的代码
假设你Firestore的emails集合里,存储邮箱的字段名叫email(如果你的字段名是别的,替换成对应的名称即可):
// 正确的查询逻辑:查找emails集合中email字段等于输入值的文档 db.collection('emails').where('email', '==', email.value).onSnapshot((querySnapshot) => { if (querySnapshot.empty) { console.log('new record'); // 没有匹配文档,邮箱未存在 } else { console.log('old record.'); // 有匹配文档,邮箱已存在 } });
关键说明
- 第一个参数是你Firestore文档里存储邮箱的字段名(比如
email),不是用户输入的内容; - 第二个参数用
==来精确匹配,判断数据库里是否有该邮箱的记录; - 这样当输入已存在的邮箱时,查询会返回对应的文档,
querySnapshot.empty为false,就会输出old record.,符合预期。
内容的提问来源于stack exchange,提问作者alittlecurryhot
相关产品推荐
相关产品推荐

