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

Javascript 如何使用动态输入从Firestore查询数据,javascript,reactjs,firebase,google-cloud-firestore,Javascript,Reactjs,Firebase,Google Cloud Firestore,我的代码有问题,我不知道如何以正确的方式解决它 我正在尝试编写一个过滤器,当用户单击每个过滤器时,它将自动从firestore查询数据 在我的Redux传奇中有这样一个: const {type, currency, location} = action.payload; 一切正常,但问题是当我尝试使用动态输入查询数据时: 例如: firebase .firestore() .collection("ItemData") .where("typ

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

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

在我的Redux传奇中有这样一个:

const {type, currency, location} = action.payload;
一切正常,但问题是当我尝试使用动态输入查询数据时: 例如:

firebase
        .firestore()
        .collection("ItemData")
        .where("type", "==", type)
        .where('currency', '==', currency)
        .where('location', '==', location)
当用户单击选项
type
时,它不会显示任何内容,因为输入的
currency
location
没有数据,只有空字符串,因此查询不会返回任何响应。除非您单击所有过滤器,否则它将显示正确的响应


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

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


特别感谢与您的问题类似的问题。

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


特别感谢与您类似的问题。

但我如何才能执行诸如type和currency have value之类的组合查询?@TonyBui该代码应该可以满足您的需要。例如,如果他们为类型选择了一个过滤器,它将向下过滤并选择一个类型,否则它根本不会搜索类型。啊,是的。我明白你的意思。谢谢你,伙计!我投你一票,但是我怎么能做像类型和货币有价值这样的组合查询呢?@TonyBui,代码应该做你想做的。例如,如果他们为类型选择了一个过滤器,它将向下过滤并选择一个类型,否则它根本不会搜索类型。啊,是的。我明白你的意思。谢谢你,伙计!我投你一票,伙计
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);
}