JavaScript-从firebase检索数据不起作用
我现在使用Firebase的应用程序有问题。不知何故,我所使用的路径工作不好 Vacunas数据库不工作: 这是我在firebase上的数据库 我想检查数据库中是否存在用户介绍的号码。不知何故,这段代码不起作用,它没有进行rootRefVerification.on('value'),我不明白为什么JavaScript-从firebase检索数据不起作用,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我现在使用Firebase的应用程序有问题。不知何故,我所使用的路径工作不好 Vacunas数据库不工作: 这是我在firebase上的数据库 我想检查数据库中是否存在用户介绍的号码。不知何故,这段代码不起作用,它没有进行rootRefVerification.on('value'),我不明白为什么 $("#buscar_vacuna").click( function(){ var numero_buscar = $("#numero_buscar").val()
$("#buscar_vacuna").click(
function(){
var numero_buscar = $("#numero_buscar").val();
var rootRefVerificacion = firebase.database().ref('vacunas');
var existencia2;
//busqueda de numero de animal para saber si existe
rootRefVerificacion.on('value', function(snapshot){
existencia2 = snapshot.child(numero_buscar).exists();
})
console.log(existencia2);
if(numero_buscar == ""){
$("#numero_buscar").addClass("is-invalid");
$('#detalles').slideUp(1000);
}else if(existencia2 == false){
alert('Animal ' + numero_buscar + ' no tiene vacunas');
$("#numero_buscar").addClass("is-invalid");
$("#numero_buscar").val('');
$('#detalles').slideUp(1000);
}else{
我认为这与路径有关,因为当我将路径从'vacunas'
更改为'inventario'
(查看下图)时,它运行良好
Inventario数据库运行良好:
希望有人能帮助我。您使用的不正确。您正在使用整数0初始化
existencia2
,但在您的代码中,您正在为其分配一个使用exists返回的布尔值。请更改这部分代码
//busqueda de numero de animal para saber si existe
rootRefVerificacion.on('value').then(snapshot => {
existencia2 = snapshot.child(numero_buscar).exists();
if(numero_buscar == ""){
$("#numero_buscar").addClass("is-invalid");
$('#detalles').slideUp(1000);
}else if(existencia2 == false){
alert('Animal ' + numero_buscar + ' no tiene vacunas');
$("#numero_buscar").addClass("is-invalid");
$("#numero_buscar").val('');
$('#detalles').slideUp(1000);
}
})
检查此代码,以便使用
rootrefVerification.on('value')中的回调异步处理代码。函数(快照){
将异步调用,因此您的代码实际上是在它存在之前尝试获取snapshot.child(numero_buscar).exists()的值
只需将代码移到回调中即可
$("#buscar_vacuna").click(
function(){
var numero_buscar = $("#numero_buscar").val();
var rootRefVerificacion = firebase.database().ref('vacunas');
var existencia2 = 0
//busqueda de numero de animal para saber si existe
rootRefVerificacion.on('value', function(snapshot){
existencia2 = snapshot.child(numero_buscar).exists();
console.log(existencia2);
if(numero_buscar == ""){
$("#numero_buscar").addClass("is-invalid");
$('#detalles').slideUp(1000);
}else if(existencia2 == false){
alert('Animal ' + numero_buscar + ' no tiene vacunas');
$("#numero_buscar").addClass("is-invalid");
$("#numero_buscar").val('');
$('#detalles').slideUp(1000);
}else{
});
对RootRefVerification.on
的回调被异步调用-因此console.log(existencia2);
将始终输出0,因为没有任何东西可以更改它(但)请同时添加Inventario
代码..!您的代码使用ref(“vacunas”)
,但您的JSON显示的是Inventario
。代码和JSON必须匹配,因此ref(“Inventario”)
@frankvanpoffelen注意到OP发布了两次JSON。第一个1显示vacunas
,第二个显示Inventario
。OP说它只在后一种情况下有效。有两件事试图使用rootrefverification
函数(如果numero\b)来控制snapshot
返回的uscar
为空,就像您在代码中签入一样,它返回false。我已将初始化的代码existencia2
编辑为false作为默认值。如果快照存在。它将设置为true。可以使用firebase使用返回的承诺。然后
。并使用您的代码在中初始化值,然后
使其异步nousIt现在可以工作了。谢谢。但是,为什么使用我发布的代码,它只需要将路径从“vacunas”更改为“inventario”就可以工作呢?