Я создаю приложение для конференций (например, приложение f8) с Expo и Firebase.
Компонент «TalkInfo» имеет функцию addOrRemoveUserTalk(loggedUser, talk)
, которая срабатывает при нажатии кнопки «Мне нравится / не нравится» на некоторыхГоворите, и состояние "buttonText" может быть таким, как "Нравится" или "Не нравится" текст в кнопке:
- Если
this.state.buttonText == 'Dislike'
, когда вы нажимаете кнопку, приложение удаляет "userTalk" из БД - , и если
this.state.buttonText == 'Like'
приложение создает «userTalk» для пользователя.
У меня есть проблема: я могу добавить userTalk в БД, и я могу удалить его,НО, если я снова добавлю того же пользователя, поговорим, добавим его в firebase и немедленно удалим
Пожалуйста, кто-нибудь, кто владеет firebase, может мне помочь?
addOrRemoveUserTalk(loggedUser, talk) {
var text = 'Like';
if(this.state.buttonText == 'Dislike') {
firebaseApp.database().ref().child('userTalks')
.orderByChild('user')
.equalTo(loggedUser.uid)
.on('child_added', (snap) => {
userTalk = snap.val();
if(userTalk.talk == talk.id) {
text = 'Like';
console.log("CHILD WILL BE DESTROYED");
snap.ref.remove();
}
})
} else {
text = 'Dislike';
console.log("CHILD WILL BE ADDED");
firebaseApp.database().ref().child('userTalks').push({
user: loggedUser.uid,
talk: talk.id,
}).key;
}
console.log("text in addOrRemoveUserTalk_________", text);
text == 'Like' ?
this.setState({ buttonText: 'Like' }) :
this.setState({ buttonText: 'Dislike' })
}