我的代码有问题,我不知道如何以正确的方式解决它。
我正在尝试编写一个过滤器,当用户单击每个过滤器时,它将自动从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
没有数据,只有空字符串,因此查询不返回任何响应。除非您单击所有过滤器,否则它将显示正确的响应。
那我该如何解决这个问题?
答案 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,该问题与您的问题相似。