以下是我为代码添加新颜色的代码,它完美运行,Firebase信息中心显示每种颜色都添加了一个新的颜色表ID:
// example pushColor('yellow') {
function pushColor(colorName) {
var colorsRef = fireBaseRef.child("colors");
colorsRef.push(colorName, function(error) {
if (error) {
alert("Color could not be saved." + error);
}
});
}
然而,在添加新颜色之前,我想确保我添加的颜色尚未存在于表中。这是我到目前为止的尝试:
function colorExists(colorName) {
var colorsRef = fireBaseRef.child("colors");
colorsRef.once('value', function(snapshot) {
exists = (snapshot.val() !== null);
if (exists) {
alert(colorName + ' exists!');
} else {
alert(venueName + ' does not exist!');
}
});
}
问题是,当我提交表单时,我会收到以下行为: 第一次检查颜色“黑色”(带空表):
"black does not exist!"
我添加黑色作为颜色。
第二次检查颜色“黑色”:
"black exists!"
......到目前为止,非常好。但是如果我提交颜色“紫色”(不在数据库中),我得到:
"purple exists!"
插入第一种颜色后我搜索的任何内容都会返回“存在!”
我猜我不理解colorExists()方法的工作方式,任何人都可以指出我正确的方向来修复这个功能,以便它做我想要的,或者帮我找到相关的文档通过其中一个值来查找实体?
答案 0 :(得分:0)
发布此消息后我发现了...我需要将我的colorExists方法更新为以下内容(代码可以使用一些清理但我希望每个人都能看到我更改的内容):
function colorExists(colorName) {
var colorsRef = fireBaseRef.child("colors");
colorsRef.once('value', function(snapshot) {
if (snapshot !== null) {
snapshot.forEach(function(snapshot) {
// if the value matches the name we specified
if (snapshot.val() === colorName) {
exists = true;
return;
}
});
if (exists) {
alert(venueName + ' exists!');
} else {
alert(venueName + ' does not exist!');
}
});
}