向 firebase 查询添加动态 where 条件
Adding dynamic where conditions to a firebase query
我目前正在尝试通过文档属性在我的 firestore
数据库中获取数据,
我发现我可以做到
const qsnap = await firebase.firestore()
.collection('blog-posts')
.where(firebase.firestore.FieldPath.documentId(), "==", id)
.where("published", "==" true)
.get()
I'm trying to make it smarter or more dynamic
这很好用,但我发现了一个问题,我想动态地将 where
条件分配给查询
为了通过地图传递我想要查找的属性,像这样
params.forEach((k, v) => {
_mainCollection.where(k, isEqualTo: v)
});
var result = await _mainCollection.get();
我认为这会起作用,因为我为地图中的每个值分配了几个位置,但它似乎不起作用我不确定为什么
那就试试这个
Query? query;
params.forEach((k, v) => {
query = _mainCollection.where(k, isEqualTo: v)
});
var result = await query!.get();
它有效,但正如您想象的那样,它只是将地图的最后一个值分配给查询,因为我总是覆盖它
所以我正在寻找一种方法来在查询中包含多个 where 条件,基本上是存储在 foreach 映射中的所有条件,或者如果有任何方法可以将它们动态添加到集合查询中,那就是太好了,如果有人知道如何为我做这件事,那将会很有帮助。
你快到了。由于 Query
是 Collection
的父级 class,您可以:
Query query = _mainCollection;
params.forEach((k, v) => {
query = query.where(k, isEqualTo: v)
});
var result = await query!.get();
我目前正在尝试通过文档属性在我的 firestore
数据库中获取数据,
我发现我可以做到
const qsnap = await firebase.firestore()
.collection('blog-posts')
.where(firebase.firestore.FieldPath.documentId(), "==", id)
.where("published", "==" true)
.get()
I'm trying to make it smarter or more dynamic
这很好用,但我发现了一个问题,我想动态地将 where
条件分配给查询
为了通过地图传递我想要查找的属性,像这样
params.forEach((k, v) => {
_mainCollection.where(k, isEqualTo: v)
});
var result = await _mainCollection.get();
我认为这会起作用,因为我为地图中的每个值分配了几个位置,但它似乎不起作用我不确定为什么
那就试试这个
Query? query;
params.forEach((k, v) => {
query = _mainCollection.where(k, isEqualTo: v)
});
var result = await query!.get();
它有效,但正如您想象的那样,它只是将地图的最后一个值分配给查询,因为我总是覆盖它
所以我正在寻找一种方法来在查询中包含多个 where 条件,基本上是存储在 foreach 映射中的所有条件,或者如果有任何方法可以将它们动态添加到集合查询中,那就是太好了,如果有人知道如何为我做这件事,那将会很有帮助。
你快到了。由于 Query
是 Collection
的父级 class,您可以:
Query query = _mainCollection;
params.forEach((k, v) => {
query = query.where(k, isEqualTo: v)
});
var result = await query!.get();