首页 > 解决方案 > 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 子句?

标签: firebaseflutterdartfirebase-realtime-database

解决方案


您不能在实时数据库中添加多个条件。一种解决方案是创建一个包含所有 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();
}

推荐阅读