首页 > 解决方案 > Firebase 查询未按预期工作 React native

问题描述

我有一个基于多个 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 });
            });
}

标签: firebasereact-nativefirebase-realtime-database

解决方案


必须用 .once 替换 .on 并将 if found 语句放在 .then() 块中


推荐阅读