JavaScript - 从firebase检索数据不起作用

时间:2018-02-16 02:37:49

标签: javascript firebase firebase-realtime-database

我的应用程序使用Firebase时遇到问题。不知怎的,我使用的路径效果不佳。

Vacunas数据库无效:

enter image description here

这是我在firebase上的数据库。

我想检查用户引入的号码是否存在于数据库中。不知怎的,这段代码没有用,它没有做rootRefVerification.on('值',......我不明白为什么。

$("#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数据库运作良好:

enter image description here

希望有人可以帮助我。

2 个答案:

答案 0 :(得分:0)

rootRefVerificacion.on('value', function(snapshot){中的回调被异步调用,因此您的代码实际上是在snapshot.child(numero_buscar).exists();存在之前尝试获取值{/ 1}

只需在回调中移动代码

即可
$("#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{
    });

答案 1 :(得分:-1)

你使用它不正确。您正在使用整数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);
        }
    })

检查一下,使用promises

异步处理代码