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

IT技术 javascript reactjs firebase google-cloud-firestore
2021-04-04 15:05:40

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

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

在此处输入图片说明

在我的 Redux Saga 中有这个:

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

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

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

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

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

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

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

但是我如何才能像类型和货币这样的组合查询有value?
2021-06-13 15:05:40
没错。我明白你的意思。谢了哥们!1 票给你伙计
2021-06-19 15:05:40
@TonyBui 那个代码应该做你想做的。例如,如果他们为类型选择了过滤器,它将向下过滤并选择一个类型,否则它根本不会搜索类型。
2021-06-21 15:05:40