例如,我的书籍列表中有动态过滤器,我可以设置特定的颜色,作者和类别。 此过滤器可以一次设置多种颜色和多个类别。
Book > Red, Blue > Adventure, Detective.
我如何添加"其中"有条件?
firebase
.firestore()
.collection("book")
.where("category", "==", )
.where("color", "==", )
.where("author", "==", )
.orderBy("date")
.get()
.then(querySnapshot => {...
答案 0 :(得分:22)
正如您在API文档中看到的那样,collection()方法返回CollectionReference。 CollectionReference扩展Query。 Query.where()和Query.orderBy()也会返回Query对象。所以你可以像这样重写你的代码:
var query = firebase.firestore().collection("book")
query = query.where(...)
query = query.where(...)
query = query.where(...)
query = query.orderBy(...)
query.get().then(...)
现在你可以输入条件来确定你想在每个阶段应用哪些过滤器。
答案 1 :(得分:2)
例如,有一个像这样的数组
const conditionList = [
{
key: 'anyField',
operator: '==',
value: 'any value',
},
{
key: 'anyField',
operator: '>',
value: 'any value',
},
{
key: 'anyField',
operator: '<',
value: 'any value',
},
{
key: 'anyField',
operator: '==',
value: 'any value',
},
{
key: 'anyField',
operator: '==',
value: 'any value',
},
]
然后,您可以将要设置查询条件的集合放入此函数中。
function* multipleWhere(
collection,
conditions = [{ field: '[doc].[field name]', operator: '==', value: '[any value]' }],
) {
const pop = conditions.pop()
if (pop) {
yield* multipleWhere(
collection.where(pop.key, pop.operator, pop.value),
conditions,
)
}
yield collection
}
您将获得收集集查询的条件。
答案 2 :(得分:1)
除了@Doug Stevenson回答。当您有多个4328836344 4328835224
时,有必要像我这样使它更具动态性。
stack0.other_stack
答案 3 :(得分:0)
async yourFunction(){
const Ref0 = firebase.firestore().collection("your_collection").doc(doc.id)
const Ref1 = appointmentsRef.where('val1', '==',condition1).get();
const Ref2 = appointmentsRef.where("val2", "!=", condition2).get()
const [snapshot_val1, snapshot_val2] = await Promise.all([Ref1, Ref2]);
const val1_Array = snapshot_val1.docs;
const val2_Array = snapshot_val2.docs;
const globale_val_Array = val1_Array .concat(val2_Array );
return globale_val_Array ;
}
/*Call you function*/
this.checkCurrentAppointment().then(docSnapshot=> {
docSnapshot.forEach(doc=> {
console.log("Your data with multiple code query:", doc.data());
});
});