I'm using Ionic + Cordova + WebSql. I have basically these tables, partners and partnerEnderecos. The address table can contain more than one row for each partner. How do I return these values?
I create the tables like this:
databaseValues.setup();
databaseValues.bancoDeDados.transaction(function(transacao) {
transacao.executeSql('CREATE TABLE IF NOT EXISTS parceiroEnderecos (' +
'parceiro_id INTEGER,' +
'logradouro VARCHAR(200),' +
'numero VARCHAR(10),' +
'UNIQUE(parceiro_id, logradouro) ON CONFLICT IGNORE);', []
);
transacao.executeSql('CREATE TABLE IF NOT EXISTS parceiros (' +
'id INTEGER NOT NULL PRIMARY KEY,' +
'nome_fantasia VARCHAR(300),' +
'UNIQUE(id, nome_fantasia) ON CONFLICT IGNORE);', []
);
});
No ParceirosController
I'm trying to do this:
databaseValues.setup();
databaseValues.bancoDeDados.transaction(function(transacao) {
transacao.executeSql('select * from parceiros', [], function(transacao, parceiros) {
for (parceiro of parceiros.rows) {
_enderecos = getParceiroEnderecos(parceiro.id);
_parceiro = {
id: parceiro.id,
nome_fantasia: parceiro.nome_fantasia,
avatar: parceiro.avatar,
beneficio_qtd: parceiro.beneficio_qtd,
beneficio_maior: parceiro.beneficio_maior,
enderecos: _enderecos
}
$scope.parceiros.push(_parceiro);
}
});
});
getParceiroEnderecos = function(parceiro_id) {
_enderecos = [];
databaseValues.setup();
databaseValues.bancoDeDados.transaction(function(transacao) {
transacao.executeSql('select * from parceiroEnderecos where parceiro_id = ?;', [parceiro_id], function(transacao, enderecos) {
_enderecos = [];
for (endereco of enderecos.rows) {
_endereco = {
logradouro: endereco.logradouro,
numero: endereco.numero
}
_enderecos.push(_endereco);
}
});
return _enderecos;
})
}
But since transacao
must be asynchronous, I can not add the address inside the partner, something like this:
parceiros = [
{
id: 1,
nome_fantasia: 'empresa 1',
enderecos: [
{
logradouro: 'Rua 1',
numero: '123'
},
{
logradouro: 'Rua 2',
numero: '987'
}
]
}
]