1
resposta

Banco de Dados para aplicação 100% offline e afins

Essa postagem não é uma dúvida, é um relato que pode ajudar quem está na dúvida sobre como utilizar o Electron para construir uma aplicação totalmente offline.

Bem, vi que havia algumas perguntas nesse sentido e resolvi inserir esse tópico que pode acabar ajudando.

Você pode tomar 2 caminhos:

  1. Escolher um banco de dados embutido (embedded database), como é o caso do SQLite.
  2. Criar um serviço que fornece acesso ao um banco de dados não embutido, como MySQL, MariaDB, MongoDB, entre outros.

Pelo primeiro caminho, você terá que inserir o banco de dados dentro da aplicação e nos arquivos JS que manipulam o banco de dados, realizar verificações se o banco existe, se as collections (ou tabelas) existem, etc. Se não existirem, essas estruturas deverão ser criadas. Você pode abstrair a criação dessas estruturas em funções. O consumo desses dados se dará igual como é apresentado no curso, por IPC.

Pelo segundo caminho, você terá que instalar na máquina do usuário o banco de dados escolhido. Para isso, seria necessário criar um instalador que realizaria esse processo. Por exemplo, se você quiser ter uma aplicação com banco de dados MariaDB, você tem que criar um instalador que além de instalar sua aplicação Electron, instalaria também o banco de dados na máquina do usuário.

Com o banco de dados instalado, você vai precisar agora de um servidor. Entretanto, isso pode ser feito dentro do próprio Electron. Você pode usar a biblioteca express para criar este servidor e manipular os dados do banco. Dessa forma, você teria que criar um arquivo de servidor com o express e inicializá-lo na função que inicializa o Electron em main.js.

Uma provável estrutura de pastas para isso seria:

  • src\

    • backend\
      • models\
      • criaEstruturas.js
      • ...
      • controllers\
      • ...
      • server.js
    • template/
      • ... pastas do template...
      • index.html
      • renderer.js
    • main.js

    O arquivo server.js é a construção do servidor com rotas, manipulação de dados. Etc. Para saber mais, veja sobre o express

    No main.js você tem a inicialização do Electron. Na função que starta a aplicação você deve fazer um require('./backend/server') para inicializar o servidor. Ou seja, você precisa fazer um require do seu arquivo que inicializa um servidor com o express.

    Mas e como consumir esses dados na aplicação? Simples, igual como se consome qualquer API na web, usando Ajax ou Axios.

    Inclusive, essa arquitetura de construção de um servidor com express para consumir os dados de um banco de dados pode ser adotada também para consumir os dados de um banco de dados embutido, como o SQLite. Essa abordagem é mais comum se fizer uso de um framework de front-end para desenvolver a aplicação, como: vue, angular ou react.

    Espero que ajude a quem precisar. Um abraço.

1 resposta

Oi Naun, tudo bem?

Muito obrigada por compartilhar com a gente essa sua dica. Ficou super bem explicado.

Com certeza ajudou várias pessoas. Irei finalizar o tópico pois o curso foi descontinuado e não faz mais parte da grade oficial.

Um abraço e bons estudos.