在Firestore API中动态添加Orderby

问题描述

我创建了一个API,在其中我将获得需要订购的字段,例如 在第一个查询[{label: 'BookingId',value: 'bookingId},{label: 'status',value: 'status}]

在第二个查询中,我将得到这样的[{label: 'userId',value: 'userId}]

我试图在Firestore引用中动态添加orderBy

orderByValues = [
    {label: 'BookingId',value: 'status}
] // it will be coming from client side

const query = firestore.collection("collectionNAme")
orderByValues.forEach(order => {
    query.orderBy(order.value)
})
await query.get()

但是上面没有带来orderBy结果

如何处理?

解决方法

由于orderBy()方法返回了Query,因此您需要为每个新添加的query重新分配orderBy,如下所示:

let query = firestore.collection("collectionNAme")
orderByValues.forEach(order => {
    query = query.orderBy(order.value)
})
await query.get()