Uma alternativa para trabalhar com banco de dados interno do celular no curso é apresentado WebSQL, eu preciso armazenar primeiramente internamente no celular para depois enviar para servidor, é possível utilizando o WebSQL?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Uma alternativa para trabalhar com banco de dados interno do celular no curso é apresentado WebSQL, eu preciso armazenar primeiramente internamente no celular para depois enviar para servidor, é possível utilizando o WebSQL?
Como mostrado no curso, vc pode sim salvar dados no celular usando o WebSQL. Depois que o dado estiver armazenado, vc pode fazer oq quiser com ele: Enviar para um backend, deixar ele salvo no celular, alterar esse dado, etc.
Não consigo salvar as informações usando webSQL.
Controller
angular.module('starter')
.controller('TipoDadoAmostraController', function($scope,$stateParams,$state,$cordovaGeolocation,$ionicPopup,FieldService,$ionicHistory,DatabaseValues) {
$scope.categoria_id = angular.fromJson($stateParams.categoria_id);
var categoria_tipo = $scope.categoria_id;
var usuario_id = window.localStorage.getItem("id");
$scope.amostra = {};
var options = {timeout: 10000, enableHighAccuracy: true};
$cordovaGeolocation.getCurrentPosition(options).then(function (position) {
var lat = position.coords.latitude;
var long = position.coords.longitude;
$scope.amostra.lat = lat;
$scope.amostra.lng = long;
},function(err) {
$ionicPopup.alert({
title : 'Erro!',
template : 'Impossível pegar a coordenada.'
}).then(function(){
$state.go('app.tipo');
})
});
$scope.fazerAmostra = function(){
if(categoria_tipo == 1){
var amostra = {
params : {
user_id : usuario_id,
cod_amostra : $scope.amostra.cod_amostra,
tipo_dado_id : categoria_tipo,
latitude : $scope.amostra.lat,
longitude : $scope.amostra.lng,
profundidade : $scope.amostra.profundidade,
tipo : $scope.amostra.tipo,
observacao : $scope.amostra.dados_adicionais
}
}
}else if(categoria_tipo == 2){
var amostra = {
params : {
user_id : usuario_id,
cod_amostra : $scope.amostra.cod_amostra,
tipo_dado_id : categoria_tipo,
latitude : $scope.amostra.lat,
longitude : $scope.amostra.lng,
altura : $scope.amostra.altura,
observacao : $scope.amostra.dados_adicionais
}
}
}
else if(categoria_tipo == 3){
var amostra = {
params : {
user_id : usuario_id,
cod_amostra : $scope.amostra.cod_amostra,
tipo_dado_id : categoria_tipo,
latitude : $scope.amostra.lat,
longitude : $scope.amostra.lng,
profundidade : $scope.amostra.profundidade,
observacao : $scope.amostra.dados_adicionais
}
}
}else if(categoria_tipo == 4){
var amostra = {
params : {
user_id : usuario_id,
cod_amostra : $scope.amostra.cod_amostra,
tipo_dado_id : categoria_tipo,
latitude : $scope.amostra.lat,
longitude : $scope.amostra.lng,
especie : $scope.amostra.especie,
observacao : $scope.amostra.dados_adicionais
}
}
}
else if(categoria_tipo == 5){
var amostra = {
params : {
user_id : usuario_id,
cod_amostra : $scope.amostra.cod_amostra,
tipo_dado_id : categoria_tipo,
latitude : $scope.amostra.lat,
longitude : $scope.amostra.lng,
familiageneroespecie : $scope.amostra.familiageneroespecie,
observacao : $scope.amostra.dados_adicionais
}
}
}
console.log(amostra);
FieldService.salvarAmostra(amostra).then(function(dados){
$scope.salvarDadosNoBancoDeDados('true');
$ionicHistory.nextViewOptions({
disableBack : true
})
$ionicPopup.alert({
title: 'Field Note',
template: 'Você acaba de enviar uma amostra.'
}).then(function(){
$state.go('app.tipo');
});
}, function(erro){
$scope.salvarDadosNoBancoDeDados('false');
$ionicHistory.nextViewOptions({
disableBack : true
})
$ionicPopup.alert({
title : 'Ops!',
template : 'Servidor com problemas. Tente mais tarde.'
}).then(function(){
$state.go('app.tipo');
})
});
$scope.salvarDadosNoBancoDeDados = function(confirmado){
DatabaseValues.setup();
DatabaseValues.bancoDeDados.transaction(function(transacao){
transacao.executeSql('INSERT INTO amostra_agua(cod_amostra, latitude, longitude, data_hora, observacao,tipo,profundidade,confirmado) VALUES (?,?,?,?,?,?,?,?)', [$scope.amostra.cod_amostra, $scope.amostra.lat,$scope.amostra.lng, $scope.amostra.dados_adicionais,$scope.amostra.profundidade,$scope.amostra.tipo, confirmado])
})
}
}
});
Dei um console.log e as informações são carregadas, ele simplesmente não salva, DatabaseValues
angular.module('starter')
.value('DatabaseValues', {
setup : function(){
this.bancoDeDados = window.openDatabase('fieldnote', '1.0', 'Banco de dados da aplicacao', 3000);
}
})
coloquei no APP já para cria as tabelas, ele cria lá, porém não consigo salvar. OBS: Estou tentando salvar no celular as informações do parametro.