我有一个基于多个WHERE子句的查询,如果找到则返回true,否则删除记录,否则返回false。问题在于它将新记录添加到数据库中,但之后会自动将其删除。注释掉删除部分时,它按预期方式工作,仅在不存在时才添加新记录。
这是我的代码:
var found = false;
firebase.database().ref(`/yums/`)
.orderByChild('recipeId').equalTo(uid)
.on('value', snapshot => {
const likes = snapshot.val();
for (var like in likes) {
if (likes[like].userId == currentUser.uid) {
found = true;
firebase.database().ref(`/yums/`)
.child(like).remove();
}
}
})
if (found == false ) {
firebase.database().ref(`/yums/`)
.push({
recipeId: uid,
userId: currentUser.uid,
timestamp: Date.now(),
})
.then(() => {
dispatch({ type: YUMMED_SUCCESS });
});
}
答案 0 :(得分:0)
必须将.on替换为.once并将if found语句放入.then()块中