【发布时间】:2020-07-09 10:41:55
【问题描述】:
我正在尝试根据 2 个字段(localitate:string、buget:integer)从 firestore 获取数据。
查询变得非常冗长,但仍然无法按预期工作..
function get_collection(){
let ref = firebase.firestore()
if (store.form_data.optiune === "camera") {
ref = ref.collection("listing")
} else if (store.form_data.optiune === "coleg") {
ref = ref.collection("user")
}
return ref
}
function build_query(){
let ref = get_collection()
let localitate = store.form_data.localitate
let buget = Number(store.form_data.buget)
// Build query
if (localitate && buget){
console.info("Filtru localitate && buget: ", localitate, buget)
ref = ref.where("localitate", "in", [localitate]).where("buget", "<=", buget)
}
else if (localitate){
console.info("Filtru localitate: ", localitate)
ref = ref.where("localitate", "in", [localitate])
}
else if (buget){
console.info("Filtru buget: ", buget)
ref = ref.where("buget", "<=", buget)
}
// Add limit of items
if (store.last_ref === undefined) {
ref = ref.limit(items_per_page)
}
console.info("Last ref is ", store.last_ref)
if (localitate && store.last_ref !== undefined) {
ref = ref.orderBy(firebase.firestore.FieldPath.documentId())
.startAfter(store.last_ref)
.limit(items_per_page)
}
else if (buget && store.last_ref !== undefined) {
ref = ref.orderBy("buget")
.startAfter(store.last_ref)
.limit(items_per_page)
}
return ref
}
如何保持每个get() 上的项目限制,并为“listing”和“coleg”集合添加适当的过滤功能?
【问题讨论】:
标签: firebase google-cloud-firestore