如何使用动态输入从Firestore查询数据

时间:2018-12-30 02:04:49

标签: javascript reactjs firebase google-cloud-firestore

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

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

enter image description here

在我的Redux Saga中,有一个:

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

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

firebase
        .firestore()
        .collection("ItemData")
        .where("type", "==", type)
        .where('currency', '==', currency)
        .where('location', '==', location)

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

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

1 个答案:

答案 0 :(得分:2)

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

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);
}

特别感谢this post,该问题与您的问题相似。