关于javascript:如何使用动态输入从Firestore查询数据

How to query data from Firestore with dynamic input

本问题已经有最佳答案,请猛点这里访问。

我的代码有问题,我不知道如何以正确的方式解决它。

我正在尝试编写一个过滤器,当用户单击每个过滤器时,它将自动从Firestore查询数据。

enter image description here

在我的Redux Saga中,请执行以下操作:

1
const {type, currency, location} = action.payload;

一切正常,但问题是当我尝试使用动态输入查询数据时:
例如:

1
2
3
4
5
6
firebase
        .firestore()
        .collection("ItemData")
        .where("type","==", type)
        .where('currency', '==', currency)
        .where('location', '==', location)

当用户单击选项type时,由于输入currencylocation没有数据,只有空字符串,因此没有任何显示,因此查询不返回任何响应。 除非您单击所有过滤器,否则它将显示正确的响应。

那么我该如何解决这个问题呢?


您仅应在需要时将其添加到查询子句中(即类型,货币或位置为真/不为空):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
let query = firebase
    .firestore()
    .collection("ItemData");

if (type) {
    query = query.where('type', '==', type);
}

if (currency) {
    query = query.where('currency', '==', currency);
}

if (location) {
    query = query.where('location', '==', location);
}

特别感谢这篇帖子与您有类似的问题。