firebase - 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 });
});
}
解决方案
必须用 .once 替换 .on 并将 if found 语句放在 .then() 块中
推荐阅读
- laravel - 如何在 LARAVEL 上配置下载按钮
- javascript - 在 React 中声明函数和变量
- javascript - 从节点容器到 python 容器的 Docker 调用
- groovy - Groovy 遍历 Map 的 Map
- machine-learning - 如何处理传统机器学习中的字符串特征数组?
- kubernetes - 查询活动和陈旧 Prometheus 时间序列超范围查询的最新值
- javascript - 如何在 nuxt.js 应用中使用 Google Adwords(和 Google Tag Manager/Analytics)
- javascript - Angular 9使用字符串连接复制到剪贴板
- java - 在 Java 中使用 EvaluateXpath 返回缺失标签的 Null 值
- python - 使用 scikit-learn OneHotEncoder 时如何处理分类数据中的缺失值 (NaN)?