我的数据库:
var carplate = document.getElementById("carplate").value;
var firebaseRef = firebase.database().ref('ClampedCar');
firebaseRef.orderByChild('carplate').equalTo(carplate).update({stat:"Unclamped"});
<label style="color: #f2f2f2">Car Plate Number</label> <br/>
<input type="text" name="carplate" id="carplate" maxlength="8" />
答案 0 :(得分:0)
您只能在数据库引用上调用update()
。要获得与查询匹配的节点的引用,必须先执行查询。
var query = firebaseRef.orderByChild('carplate').equalTo(carplate);
query.once('value', function(snapshot) {
snapshot.forEach(function(child) {
child.ref.update({stat:"Unclamped"});
})
});
由于查询可能与多个子项匹配,因此需要snapshot.forEach()
循环。 如果不是这种情况,即您的carplate
已经是唯一的,您可以考虑将数据模型更改为:
ClampedCar
carPlate1: "Clamped"
carPlate2: "Clamped"
使用此模型,您不需要查询来更改状态,只需执行以下操作:
firebaseRef.child(carplate).set("Unclamped")
答案 1 :(得分:0)
我会对匹配进行验证。有可能这样做吗?
var exist =query.once('value', function(snapshot) {
snapshot.forEach(function(child) {
child.ref.update({stat:"Unclamped"});
})
});
if(exist){
window.alert("Status updated")
}else{
window.alert("Car Plate doesnot match");
}
&#13;