【发布时间】:2018-05-24 00:30:56
【问题描述】:
我正在使用 Expo 和 Firebase 创建一个会议应用程序(如 f8 应用程序)。
组件“TalkInfo”有一个函数addOrRemoveUserTalk(loggedUser, talk),当你点击某个Talk的Like/Dislike按钮时触发,状态“buttonText”可以是按钮中的“Like”或“Dislike”文本:
- 如果
this.state.buttonText == 'Dislike'当您单击按钮时,应用会从数据库中删除“userTalk” - 如果
this.state.buttonText == 'Like'应用程序为用户创建“userTalk”。
我有一个问题:我可以在数据库中添加一个 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' })
}
【问题讨论】:
-
你应该使用一次而不是一次
-
谢谢,它有效!差别不大,对我的代码影响很大。
标签: javascript firebase react-native firebase-realtime-database expo