javascript - 使用实时 Firebase 的 If-else 条件
问题描述
是否可以在 firebase 的实时结果中使用 if/else?我的数据库如下所示:
以前我已经尝试过,如果两个“waktu”的结果相同,则它可以工作,== 最近。
但我想要的是如果值之一“waktu”==最近,那么“Hasil”= 0,如果两个“时间”都不等于“最近”,那么值“Hasil”= 0。
if ("Recent" == (one of) "waktu") {
Hasil : "1";
} else {
Hasil : "0";
}
这是我之前的代码,如果两个“waktu”值==最近,则值“Result”= 1。但我想要“waktu”的一个值==最近。
var recent = "";
var root = firebase.database().ref();
root.child("Time").on('value', (snapshot) => {
recent = snapshot.val().Recent;
});
root.child("jadwal-pakan").on('value', (snapshot) => {
snapshot.forEach(jadwal_waktu => {
if (jadwal_waktu.child("waktu").val() == recent) {
root.update({
Keadaan: {
Hasil: 1
}
});
} else {
root.update({
Keadaan: {
Hasil: 0
}
});
}
})
})
谢谢 :)
解决方案
问题在于代码执行的时间。由于所有数据都是从 Firebase 异步加载的,因此您recent = snapshot.val().Recent
可以在运行后if (jadwal_waktu.child("waktu").val() == recent) {
运行。
为确保这一点得到保证,您需要像这样嵌套侦听器:
root.child("Time").on('value', (snapshot) => {
recent = snapshot.val().Recent;
root.child("jadwal-pakan").on('value', (snapshot) => {
snapshot.forEach(jadwal_waktu => {
if (jadwal_waktu.child("waktu").val() == recent) {
root.update({
Keadaan: {
Hasil: 1
}
});
} else {
root.update({
Keadaan: {
Hasil: 0
}
});
}
})
})
});
现在,语句不会乱序执行,并且if (jadwal_waktu.child("waktu").val() == recent) {
会按预期工作。
推荐阅读
- unit-testing - 显示 jest.config.js 中指定的每个目录的覆盖结果
- c# - 不要创建 codefirst DB .net
- sql - 如何使用新列作为标志来显示空行?
- java - Java 信号量的确定性如何保证?
- java - 使用静态变量查找数组中的元素数
- python-3.x - 系统找不到指定的路径:Django 管理页面中更改字段时返回错误
- php - 编辑表格后保留图像。-Cakephp 3
- python - 如何将 base64 字符串中的图像作为参数传递给 Python 脚本?
- android - Android ffmpeg 命令未执行
- html - TinyMCE 从 iframe 在正文中添加 div