Flutter上的Firestore查询

Tso*_*tos 12 firebase flutter google-cloud-firestore

如何在FlutterFire中使用.where()来执行Firestore的查询?因为文档和示例没有涵盖这一点我很困惑.我在这里没有找到其他问题所以我希望我不要问重复.

gre*_*nes 31

下面的示例遍历集合"fields"中的每个文档,并过滤"grower".没有相关文档,但您可以查看源代码.

import 'package:cloud_firestore/cloud_firestore.dart';

Firestore.instance.collection('fields').where('grower', isEqualTo: 1)
    .snapshots().listen(
          (data) => print('grower ${data.documents[0]['name']}')
    );
Run Code Online (Sandbox Code Playgroud)

来自源代码:

  Query where(
    String field, {
    dynamic isEqualTo,
    dynamic isLessThan,
    dynamic isLessThanOrEqualTo,
    dynamic isGreaterThan,
    dynamic isGreaterThanOrEqualTo,
    bool isNull,
  }) {..}
Run Code Online (Sandbox Code Playgroud)

  • 这有帮助.谢谢.需要在插件上改进文档. (5认同)
  • 您好,我想知道您是否可以对多个值进行“哪里”过滤,从而将多个值放入子句中。例如:年龄大于x,而权重小于,等等。 (2认同)
  • 嘿@Jorge和其他仍在寻找多重条件查询的人,我知道可以使用多个`where`子句来实现。 (2认同)
  • > 给我看代码:@override Stream<List<UserFeedEntity>> userfeeds(String userID) { return firestore.collection(path).where("userID", isEqualTo: userID).where("projectID", isEqualTo: "sc_demo_project1 ").snapshots().map((snapshot) { return snapshot.documents.map((doc) { return UserFeedEntity( doc['projectID'], doc['installationID'], doc['userID'], doc[ 'feeds'].cast<String>(), ); }).toList(); }); } (2认同)

Cop*_*oad 18

更新(空安全代码)

由于现在许多类已被弃用或完全删除,因此请将此代码用于 Flutter 2.0 及更高版本。

final querySnapshot = await FirebaseFirestore.instance
    .collection('employees')
    .limit(10)
    .where('age', isGreaterThan: 30)
    .get();

for (var doc in querySnapshot.docs) {
  // Getting data directly
  String name = doc.get('name');
  
  // Getting data from map
  Map<String, dynamic> data = doc.data();
  int age = data['age'];
}
Run Code Online (Sandbox Code Playgroud)