FlutterFire Firestore字符串匹配查询 如何获取指定email的全部记录
Firestore 精确匹配email字段查询方案
写法错误原因
- 第一种写法:Flutter版Firestore SDK不支持传入
>=这类字符串作为操作符,必须使用官方提供的命名参数,因此触发语法错误 - 第二种写法:
isGreaterThan是匹配大于指定值的记录,逻辑本身不符合精确匹配的需求,返回全部记录是字符排序规则导致的异常结果 - 第三种写法:同时要求字段值大于且小于同一个值属于逻辑矛盾,自然没有符合条件的记录返回
- 第四种写法:
arrayContainsAny仅适用于数组类型的字段,你的email是字符串类型字段,无法匹配到结果
正确实现代码
要精确匹配字段等于指定值,直接使用isEqualTo命名参数即可:
QuerySnapshot userList = await users!.where('email', isEqualTo: email1).get();
注意事项
- 确认
users变量指向的是正确的Firebase集合引用 - 确保存储的email字段值和传入的
email1变量完全一致,包括大小写、前后空格、特殊字符等,否则会匹配失败 - 单字段等值查询不需要额外创建复合索引,可直接执行
内容的提问来源于stack exchange,提问作者Leo
相关产品推荐
相关产品推荐

