Firebase 扑动火灾中的Firestore动态查询
我有一个内容集合,我想在某些情况下应用某些过滤器检索它们 我将筛选器值存储在一个bloc对象中,该值可以为null,也可以不为null。如果为空,则不应应用筛选器;如果有值,则应用筛选器 我想这样做:Firebase 扑动火灾中的Firestore动态查询,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我有一个内容集合,我想在某些情况下应用某些过滤器检索它们 我将筛选器值存储在一个bloc对象中,该值可以为null,也可以不为null。如果为空,则不应应用筛选器;如果有值,则应用筛选器 我想这样做: CollectionReference contents = FirebaseFirestore.instance.collection('content'); if (_bloc.searchQuery != null && _bloc.searchQuery.
CollectionReference contents =
FirebaseFirestore.instance.collection('content');
if (_bloc.searchQuery != null && _bloc.searchQuery.isNotEmpty) {
// Add where criteria here
}
if (_bloc.publishUntilQuery != null) {
// Add where criteria here
}
if (_bloc.publishFromQuery != null) {
// Add where criteria here
}
return StreamBuilder<QuerySnapshot>(
stream: contents.snapshots(),
builder:
(BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
// ...
},
);
CollectionReference内容=
FirebaseFirestore.instance.collection('content');
if(_bloc.searchQuery!=null&&u bloc.searchQuery.isNotEmpty){
//在此处添加where条件
}
if(_bloc.publishUntilQuery!=null){
//在此处添加where条件
}
if(_bloc.publishFromQuery!=null){
//在此处添加where条件
}
返回流生成器(
流:contents.snapshots(),
建设者:
(BuildContext上下文,异步快照){
// ...
},
);
问题是我不知道如何构造类似于查询对象的东西,以便以后将其添加到最终搜索中
如何解决这个问题?非常感谢。如中所述,该类继承自该类。此外,用于优化查询的Query
类中的方法(例如orderBy()
,where()
,等等)返回查询。因此,您可以使用这些不同的方法来优化初始查询,应用“特定情况下的特定过滤器”,如下所示:
Query contents =
FirebaseFirestore.instance.collection('content');
if (_bloc.searchQuery != null && _bloc.searchQuery.isNotEmpty) {
contents = contents.where('....', isEqualTo: '....'); // For example, to be adapted
}
if (_bloc.publishUntilQuery != null) {
contents = contents.where('....', isEqualTo: '....'); // For example, to be adapted
}
if (_bloc.publishFromQuery != null) {
contents = contents.where('....', isEqualTo: '....'); // For example, to be adapted
}
return StreamBuilder<QuerySnapshot>(
stream: contents.snapshots(),
builder:
(BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
// ...
},
);
查询内容=
FirebaseFirestore.instance.collection('content');
if(_bloc.searchQuery!=null&&u bloc.searchQuery.isNotEmpty){
contents=contents。其中(“…”,isEqualTo:“…”);//例如,要改编
}
if(_bloc.publishUntilQuery!=null){
contents=contents。其中(“…”,isEqualTo:“…”);//例如,要改编
}
if(_bloc.publishFromQuery!=null){
contents=contents。其中(“…”,isEqualTo:“…”);//例如,要改编
}
返回流生成器(
流:contents.snapshots(),
建设者:
(BuildContext上下文,异步快照){
// ...
},
);
如中所述,该类继承自该类。此外,用于优化查询的Query
类中的方法(例如orderBy()
,where()
,等等)返回查询。因此,您可以使用这些不同的方法来优化初始查询,应用“特定情况下的特定过滤器”,如下所示:
Query contents =
FirebaseFirestore.instance.collection('content');
if (_bloc.searchQuery != null && _bloc.searchQuery.isNotEmpty) {
contents = contents.where('....', isEqualTo: '....'); // For example, to be adapted
}
if (_bloc.publishUntilQuery != null) {
contents = contents.where('....', isEqualTo: '....'); // For example, to be adapted
}
if (_bloc.publishFromQuery != null) {
contents = contents.where('....', isEqualTo: '....'); // For example, to be adapted
}
return StreamBuilder<QuerySnapshot>(
stream: contents.snapshots(),
builder:
(BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
// ...
},
);
查询内容=
FirebaseFirestore.instance.collection('content');
if(_bloc.searchQuery!=null&&u bloc.searchQuery.isNotEmpty){
contents=contents。其中(“…”,isEqualTo:“…”);//例如,要改编
}
if(_bloc.publishUntilQuery!=null){
contents=contents。其中(“…”,isEqualTo:“…”);//例如,要改编
}
if(_bloc.publishFromQuery!=null){
contents=contents。其中(“…”,isEqualTo:“…”);//例如,要改编
}
返回流生成器(
流:contents.snapshots(),
建设者:
(BuildContext上下文,异步快照){
// ...
},
);