Tengo un filtro en mi sitio web, necesito recuperar datos en función de las entradas en el filtro. Algunos campos del filtro pueden estar vacíos (''), quiero poder ignorar esas consultas relacionadas con esos campos básicamente. Algo como esto
//fields const { country, age, gender, contract, budget_low, budget_high } = queries; //query db.collection("users") .where("country", "in", country === "" ? "any" : "Nigeria") .where("gender", "in", gender === "" ? "any" : "Male") .where("age", "in", age === "" ? "any" : "21") .get() .then((querySnapshot) => { var data = []; querySnapshot.forEach((doc) => { data.push(doc.data()); }); setPeers(data); }) .catch((error) => { console.log("Error getting documents: ", error); });¿Hay alguna manera de usar 'cualquiera' o 'todos' si los campos están vacíos (''), de modo que recupere todos los datos condicionalmente (si existe un campo de filtro)?
Querrá crear dinámicamente su consulta y solo agregar las condiciones para los valores que el usuario realmente seleccionó.
let query = db.collection("users"); if (country !== "") query = query.where("country", "==", country); if (gender !== "") query = query.where("gender", "==", gender); if (age !== "") query = query.where("age", "==", age); query.get()...En la nueva sintaxis modular/v9, sería:
let conditions = [] if (country !== "") conditions.push(where("country", "==", country)); if (gender !== "") conditions.push(where("gender", "==", gender)); if (age !== "") conditions.push(where("age", "==", age)); let query = query(collection(db, "users"), ...conditions); getDocuments(query)...