【发布时间】:2018-08-02 22:05:14
【问题描述】:
如何使用 FlutterFire 中的 .where() 对 Firestore 执行查询?因为文档和示例没有涵盖这一点,所以我很困惑。我在这里没有找到其他问题,所以我希望我没有重复。
【问题讨论】:
标签: firebase google-cloud-firestore flutter
如何使用 FlutterFire 中的 .where() 对 Firestore 执行查询?因为文档和示例没有涵盖这一点,所以我很困惑。我在这里没有找到其他问题,所以我希望我没有重复。
【问题讨论】:
标签: firebase google-cloud-firestore flutter
下面的示例遍历集合“字段”中的每个文档,并过滤“种植者”。没有这方面的文档,但您可以查看源代码。
import 'package:cloud_firestore/cloud_firestore.dart';
Firestore.instance.collection('fields').where('grower', isEqualTo: 1)
.snapshots().listen(
(data) => print('grower ${data.documents[0]['name']}')
);
来自源代码:
Query where(
String field, {
dynamic isEqualTo,
dynamic isLessThan,
dynamic isLessThanOrEqualTo,
dynamic isGreaterThan,
dynamic isGreaterThanOrEqualTo,
bool isNull,
}) {..}
【讨论】:
where 子句。
如果你使用 streambuilder 的话
StreamBuilder<QuerySnapshot>(
stream: feed.where('uid', isEqualTo: 'aaaaaaaaaaaaa').snapshots(),
builder: (_, snapshot) {
if (snapshot.hasData) {
return Column(
children: snapshot.data.docs
.map((e) => itemGrid(
e.data()['username'],
e.data()['uid'],
e.data()['uavatarUrl'],
e.data()['imageUrl'],
e.data()['desc'],
))
.toList(),
);
} else {
print('null');
return Container();
}
}));
【讨论】:
由于很多类现在要么被弃用,要么被完全删除,请将此代码用于 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'];
}
【讨论】: