Guardé diferentes productos en mi Firestore y están disponibles para su compra en diferentes días de la semana. Así que aseguré la disponibilidad en diferentes días como una matriz de 7 valores booleanos en mi Firestore.
weekdays = [true, true, true, false, false, true, false];Ahora, si quiero obtener todos los productos que están disponibles el viernes, tendría que hacer algo como esto:
// assume date.getDay() is 5 const q = query( collection(db, "bakerys", `${bakery.id}`, "products"), where(`weekdays[${date.getDay()}]`, "==", "true") ); const querySnapshot = await getDocs(q);Esto no parece funcionar. ¿Realmente tengo que almacenar cada día de la semana en su propio valor por separado para que esto funcione o hay una manera de hacer que esto funcione de manera diferente?
Puede almacenar los días directamente en lugar de un valor booleano como este:
weekdays = ['Monday', 'Friday'];Luego ejecuta esta consulta:
const q = query( collection(db, "bakerys", `${bakery.id}`, "products"), where(`weekdays`, "array-contains", "Monday") ); Esta consulta obtendrá todos los documentos en los que la matriz de weekdays de la semana contenga Monday . Si desea almacenar valores booleanos con índice de día, deberá almacenar un mapa como este:
weekdays = { 1: true, 5: false }Aquí puede utilizar la siguiente consulta:
const q = query( collection(db, "bakerys", `${bakery.id}`, "products"), where(`weekdays.${date.getDay()}`, "==", true) ); Además, tenga en cuenta que su matriz original contiene valores booleanos pero su consulta tenía "true" (cadena). Asegúrese de que los tipos en db y query coincidan.