【问题标题】:How to query data from Firestore with dynamic input [duplicate]如何使用动态输入从 Firestore 查询数据
【发布时间】:2019-05-27 05:42:56
【问题描述】:

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

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

在我的 Redux Saga 中有这个:

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

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

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

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

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

【问题讨论】:

    标签: javascript reactjs firebase google-cloud-firestore


    【解决方案1】:

    您应该只在需要时添加到查询子句(即类型、货币或位置为真/非空):

    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 遇到了与您类似的问题。

    【讨论】:

    • 但是我怎样才能像类型和货币这样的组合查询有价值呢?
    • @TonyBui 该代码应该做你想做的事。例如,如果他们为类型选择了过滤器,它会向下过滤并选择一个类型,否则它根本不会搜索类型。
    • 啊,是的。我明白你的意思。谢了哥们!为你投 1 票
    猜你喜欢
    • 1970-01-01
    • 2021-06-30
    • 2017-12-11
    • 1970-01-01
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    • 1970-01-01
    相关资源
    最近更新 更多