Я работаю над приложением с response-native / expo и пытаюсь получить данные из Firestore.
В моей структуре базы данных у меня есть коллекция под названием «пользователи». Эта коллекция содержит пользовательские документы. У каждого пользователя есть подколлекция «userEvents», в которой хранятся ссылки на события, на которые они подписаны
Я могу получить данные из коллекции, но если происходят некоторые изменения, мои экраны не обновляются правильно.
Я получаю данные с:
onCollectionUpdate(uid){
this.setState({events: '', isLoading: true})
let userCollection = firebase.firestore().collection("users").doc(uid).collection("uEvents");
userCollection.onSnapshot(snapshot =>{
Promise.all(
snapshot.docs.map(snap =>{
return new Promise((resolve, reject)=>{
const data = snap.data()
const visited = data.visited
data.eventRef.onSnapshot(doc =>{
let eventData = doc.data()
let object ={
id: doc.id,
visited: visited,
title: eventData.title,
picture: eventData.picture,
password: eventData.password,
eventCode: eventData.eventCode,
description: eventData.description
}
resolve(object)
})
})
})
).then(data =>{
this.setState({events: data, isLoading: false})
}).catch(error =>{
console.log(error)
})
})
}
и вызовите функцию с помощью:
this.unsubscribe = this.onCollectionUpdate(this.state.currentUser.uid)
Когда я удаляю событие из коллекции uEvent, всегда последний элемент исчезает, пока я снова не открою приложение. Если я добавляю новое событие всегда, последний элемент отображается два раза.
Было бы неплохо, если бы кто-то мог мне помочь или дать подсказку