我是Firebase实时数据库的新手,我必须在数据库中保存一些特殊字符,如下所示: 注意:孩子可以包含任何特殊字符,而不仅仅是$ 请问我该如何处理这样的问题? 如我所见,有些人正在替换字符,但是在我的情况下,我不应该更改值,因为我必须按原样显示给用户,因为它对用户有意义。 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
下面的代码是我一直在尝试做的,但是dbRef.on("child_added...
一次然后执行检查。谢谢。
let dbRef = firebase.database().ref("/ExamplePath");
let found = false;
dbRef.on("child_added", (child) => {
if (child.val().test == testingVal) {
console.log("Found One!");
found = true;
}
});
if (found) {
console.log("Finished!");
}else{
console.log("Nope!");
}
为每个孩子调用child_added
处理程序,并且无法在其中知道这是否是最后一个孩子。 为此,您需要收听value
事件。
所以一种选择是:
let dbRef = firebase.database().ref("/ExamplePath");
let found = false;
dbRef.on("child_added", (child) => {
if (child.val().test == testingVal) {
console.log("Found One!");
found = true;
}
});
dbRef.on("value", (snapshot) => {
if (found) {
console.log("Finished!");
}else{
console.log("Nope!");
}
});
这很好用,Firebase 确保数据只下载一次,尽管它被传递给两个侦听器。
如果你愿意,你也可以只使用一个value
监听器来做同样的事情:
let dbRef = firebase.database().ref("/ExamplePath");
dbRef.on("value", (snapshot) => {
let found = false;
snapshot.forEach((child) => {
if (child.val().test == testingVal) {
console.log("Found One!");
found = true;
}
});
if (found) {
console.log("Finished!");
}else{
console.log("Nope!");
}
});
两种方法的结果和效率是相同的,因此您应该选择对您的应用程序最方便的方法。 例如,当我负责直接更新 UI 中的每个元素时,我更喜欢听child_
事件,因为child_*
事件非常直接地告诉我该做什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.