How to insert a dataset from an array in WEBSQL with Ionic?

0

I want to insert a dataset into a local table (WEBSQL). The way I'm doing just inserts the last set of array, I wanted to store all the objects.

To create my WEBSql I created this JS:

(function(){
    "use strict";
    angular.module("nhaac").value("DBLocalAdBebidas",{
        db:null,

        localdb: function() {
            this.db = window.openDatabase("NhaccDB", "1.0", "Banco Local", 2000);
            this.db.transaction(function(res) {
                res.executeSql("CREATE TABLE IF NOT EXISTS AD_BEBIDAS(nome_bebida_ad TEXT, valor TEXT, quantidade TEXT);", []);
            });
        }
    })
})();

In my controller I call it like this:

        // PEGA BEBIDAS SELECIONADAS      
        $scope.updateBebida = function(){
            var p = [];
            for (var i = 0; i < $scope.bebidasextras.length; i++) {
               var item = $scope.bebidasextras[i];
                console.log(item);
               if ( item.selected) {
                p.push(item )  
               }

            }

            $scope.selectedItems = p;
             var item;
            console.log('AQUI');

    //aqui vai percorrer todo o conteudo da variavel p, poderia ate dar
    //uma otimizada e deixar junto com o p.push(item), ai "economiza" um for
//    for(var i in p){
//        console.log('ENTROU NO FOR');
//        item = p[i];
//        console.log(item);
//        var titulo = p.filter(function(e) {
//            return e.titulo_promo == item.ad_bebida_titulo
//             console.log('VAI IMPRIMIR o array');
//            conlole.log(titulo);
//            console.log('Pegou o array');

//          })   


        // TESTA SE GUARDA A BEBIDA SELECIONADA
        // INSERINDO DADOS LOCALMENTE
        console.log('vai iniciar o localDB');
        DBLocalAdBebidas.localdb();
        console.log('Iniciou o localDB');

        DBLocalAdBebidas.db.transaction(function(res) {
            console.log('entrou na transação');
            res.executeSql("INSERT INTO AD_BEBIDAS (nome_bebida_ad, valor, quantidade) VALUES(?,?,?);", [item.ad_bebida_titulo, item.ad_bebida_valor, item.ad_bebida_quantidade]);
        });

    }
//}
})

But it takes only the last data, I would like to get all the data and put a condition where the "item.ad_budget_quantity" field is > 0.

This is the dataset I want to store:

Any suggestions how to do it?

    
asked by anonymous 07.09.2016 / 20:44

1 answer

1

You are filling in the variable item with the last element of the loop:

for (var i = 0; i < $scope.bebidasextras.length; i++) {
    var item = $scope.bebidasextras[i]; // Aqui item pega o último elemento do laço
    if (item.selected) {
        p.push(item) // Você deve utilizar o array p ao invés da variável item 
    }
}

Using the variable p yes you will have the values entered correctly:

angular.forEach(p, function(item){
    res.executeSql(
        "INSERT INTO AD_BEBIDAS (nome_bebida_ad, valor, quantidade) VALUES(?,?,?);", 
        [
            item.ad_bebida_titulo, 
            item.ad_bebida_valor, 
            item.ad_bebida_quantidade
        ]
    );
});
    
21.02.2017 / 18:11