[Firestore SS][1] [1]: https://i.stack.imgur.com/EI1Dm.png
Quiero obtener cada documento como se muestra en SS, está almacenado como Pets + unique_userId. No puedo obtener todos los datos juntos. Solo puedo obtener un dato de un usuario en particular usando el código a continuación.
const [info,setInfo]=useState([]); useEffect(() => { db.collection("pets ESYXOPqlJpZ48np8LfNivnh9pvc2").onSnapshot((snapshot) => setInfo(snapshot.docs.map((doc) => doc.data())) ); },[]);Aquí ESYXOPqlJpZ48np8LfNivnh9pvc2 este es el ID de usuario de cada usuario único
Por favor, ayúdenme a obtener todos los datos de Mascotas en lugar de codificar y obtener un dato en particular.
Pruebe el siguiente código,
const [docs, setDocs] = useState([]); useEffect(() => { const querySnapshot = await getDocs(collection(db,"pets ESYXOPqlJpZ48np8LfNivnh9pvc2")); const document =[]; querySnapshot.forEach((doc) => { document.push({ ...doc.data(), id: doc.id }); }); setdocs(document); }, []);¿Supongo que la identificación adjunta es una referencia a la identificación del propietario? En este caso, ¿sería una opción obtener la lista de propietarios y usar la identificación de todos para crear una lista de identificaciones de colección y luego obtener todos sus datos?
Si no, solo veo opciones:
pets y tenga una referencia con/a esa id en los documentos de mascotas. const functions = require('firebase-functions') const { Firestore } = require('@google-cloud/firestore'); module.exports = functions .region('europe-west3') // use the region you want here .https.onRequest(async (request, response) => { try { const firestore = new Firestore(); const collections = (await firestore.listCollections()).map(collection => collection.id) response.json({ data: collections }) } catch (error) { response.status(500).send(error.message) } }) Obtendrá un punto final que puede usar para obtener los ID de colección (por ejemplo: https://your-project-name.cloudfunctions.net/collections )
const [pets, setPets] = useState([]); const [collectionIds, setCollectionIds] = useState([]) useEffect(() => { fetch('https://your-project-name.cloudfunctions.net/collections') .then(response => response.json()) .then(({ data }) => setCollectionIds(data)) }, []) useEffect(() => { collectionIds.forEach((collectionId) => { // There are better ways to do this, // I'm just using your approach so you can focus on the rest of the code db.collection(collectionId).onSnapshot((snapshot) => { setPets((currentPets) => [...currentPets, ...snapshot.docs.map((doc) => doc.data())]) }) }) }, [collectionIds])Tenga en cuenta que estas son implementaciones de muy alto nivel, no hay manejo de errores, ni desmontajes ni nada, así que téngalo en cuenta. ¡Espero que ayude, buena suerte!