firebase - Flutter - 如何在从 firebase 实时数据库中获取数据时检查多个条件?
问题描述
我正在尝试从 firebase 获取大量数据。当我通常使用单个where 子句加载所有数据时,加载大约需要 1 分钟。我想添加多个 where 子句,以便我可以在获取时进行检查,以便通过不获取不需要的数据来优化时间。从firebase实时数据库中获取数据时如何检查多个条件
这是我的代码:
var query = FirebaseDatabase.instance.reference().child(str_gender)
.child('Facial Parts/Nose').orderByChild("noselength").equalTo(str_length);
在这里我只能通过鼻子长度检查,但我想通过鼻子长度、鼻子类型、鼻子宽度来过滤它
用其他语言我们可以说
noselength=value and nosewidth=value and nosewidth=value
如果条件满足,那么只有我需要获取数据
那么如何在我现有的代码中添加多个 where 子句?
解决方案
您不能在实时数据库中添加多个条件。一种解决方案是创建一个包含所有 3 个字段的属性:
length_width_type : 10_10_normal
然后做:
var query = FirebaseDatabase.instance.reference().child(str_gender)
.child('Facial Parts/Nose').orderByChild("length_width_type").equalTo(value);
其他解决方案是使用 firestore,因为它支持多个where
子句:
void getData() async {
var result = await Firestore.instance
.collection("str_gender")
.where("noseLength", isEqualTo: 10)
.where("noseWidth", isEqualTo: 10)
.getDocuments();
}
推荐阅读
- hive - 在 aws athena 中将“2020 年 7 月 1 日”转换为 yyyymmdd(20200701)
- python - python WooCommerce REST API 如何使用变体 id 检索产品的父 id?
- javascript - 在浏览器中格式化数学表达式
- c++ - 我可以加载 header(.h) 文件以在运行时获取结构吗?(C++)
- java - 获取服务器端请求伪造 (SSRF) (CWE ID 918) restTemplate.getForEntity
- google-apps-script - Google Sheet Script 上的 Keycloak 身份验证
- python - 使用嵌套 for 循环从另一个文件中的一个文件中搜索特定值
- function - 如何通过值而不是通过引用传递变量作为飞镖函数的参数?
- azure - 是否可以禁用 kudu scm
- python - 如果 xldate < 0.00:TypeError:使用 xldate 读取时,“str”和“float”的实例之间不支持“<”