Aprenda o Couchbase Lite em 5 minutos e siga o CRUD
Por Matteo Sist, líder de tecnologia móvel, @MOLO17
Um dos principais ingredientes para aprender a criar um ótimo aplicativo móvel é usar um bom banco de dados. Portanto, neste artigo, mostraremos como é fácil integrar o Couchbase Lite em um aplicativo iOS.
O que é o Couchbase Lite? O Couchbase Lite é o SDK móvel do Couchbase Mobile que permite que os desenvolvedores integrem facilmente um banco de dados NoSQL em aplicativos móveis.
Este blog analisará as operações CRUD (criar, ler, atualizar, excluir), fornecendo detalhes, além de dicas e truques para cada uma das etapas necessárias, e destacará um dos meus recursos favoritos, o Sync Gateway.
C como Criar
A primeira etapa é criar um documento com o Couchbase. O Couchbase tem um método para criar um documento, salvarDocumento. Esse método aceita dois parâmetros. O primeiro é o documento ( CouchbaseLiteSwift.MutableDocument) a ser salvo, e o segundo é um parâmetro opcional ( CouchbaseLiteSwift.Controle de simultaneidade ) que dá aos usuários a opção de resolver possíveis conflitos automaticamente ou lançar uma exceção para permitir que os usuários resolvam o conflito manualmente. O valor padrão é "LastWriteWins“.
Como usar salvarDocumento método?
Primeiro, precisamos de uma instância de banco de dados ( CouchbaseLiteSwift.Banco de dados ), portanto, basta iniciar um novo banco de dados:
1 2 3 4 5 |
fazer { banco de dados = tentar Banco de dados(nome: "DatabaseName" (nome do banco de dados)) } captura { fatalError("Erro ao abrir o banco de dados") } |
Em seguida, precisamos criar o documento que queremos salvar. Portanto, crie um novo documento CouchbaseLiteSwift.MutableDocument e adicionar alguns campos:
1 2 3 4 5 |
deixar doc = MutableDocument(id: "MyUniqueDocumentIdentifier") doc.setString("Mickey", forKey: "name" (nome)) doc.setString("Mouse", forKey: "sobrenome") doc.setInt(91, forKey: "idade") doc.setString("Contato", forKey: "tipo") |
Por fim, salve-o:
1 2 3 4 5 |
fazer { tentar banco de dados.salvarDocumento(doc, concurrencyControl: .lastWriteWins) } captura { fatalError("Erro ao salvar o documento") } |
Como você pode ver, criar e salvar um documento no Couchbase é muito simples e intuitivo.
Dicas e truques para aprender com o Couchbase Lite
– Digitação: No documento, adicionei um campo chamado tipo doc.setString("Contato", forKey: "tipo") . Esse é um truque que permite dividir facilmente um documento em tipos e facilita as operações de leitura. Mais adiante, demonstrarei como usar esse campo.
– Id: Você não precisa fornecer um ID ao criar um documento. É um campo opcional e, se você não o fizer, o Couchbase gera um UUID para você.
– Criação de documentos: Se desejar, você pode criar um documento a partir de um dicionário (ou de um mapa de valores chave) simplesmente passando o dicionário como parâmetro no construtor do documento.
R como leitura
Agora que criamos nosso primeiro documento, também queremos lê-lo e exibi-lo em uma lista. Há duas maneiras de recuperar um documento:
- Obter por id
- Consulta
Obter por id
Para recuperar um documento usando seu ID, primeiro precisamos de uma instância do banco de dados para uma operação de leitura.
1 2 3 4 5 |
fazer { banco de dados = tentar Banco de dados(nome: "DatabaseName" (nome do banco de dados)) } captura { fatalError("Erro ao abrir o banco de dados") } |
Então, podemos usar o método documento que precisa do ID do documento para recuperá-lo. O tipo de retorno desse método é um objeto de documento opcional (CouchbaseLiteSwift.Document?) que será nulo se o documento não existir.
1 |
deixar doc = banco de dados.documento(comID: "MyUniqueDocumentIdentifier") |
Consulta
Quanto à operação get by id, também precisamos de uma instância do banco de dados para a consulta.
1 2 3 4 5 |
fazer { banco de dados = tentar Banco de dados(nome: "DatabaseName" (nome do banco de dados)) } captura { fatalError("Erro ao abrir o banco de dados") } |
A próxima etapa é criar a consulta. Para isso, precisamos usar a metalinguagem **N1QL**. N1QL, a linguagem de consulta do Couchbase que estende o SQL para dados JSON, permite que os usuários definam uma consulta com uma sintaxe semelhante à do SQL em um banco de dados NoSQL. Veja o exemplo abaixo.
1 2 3 4 |
deixar consulta = Criador de consultas .selecionar(SelecionarResultado.todos()) .de(Fonte de dados.banco de dados(banco de dados)) .onde(Expressão.propriedade("tipo").igual a(Expressão.string("Contato"))) |
Dessa forma, definimos uma consulta simples que pesquisou todos os documentos (com todos os campos, é claro) do banco de dados em que o campo "type" é igual a "Contact".
Agora, basta executar a consulta e receberemos um conjunto de resultados contendo todos os documentos que observam as opções da consulta.
1 2 3 4 5 |
fazer { resultado = tentar consulta.executar() } captura { fatalError("Consulta inválida") } |
O resultado do objeto está em conformidade com o protocolo do iterador, portanto, pode ser iterado para obter cada documento e fazer coisas. O resultado retornado pela consulta é um instantâneo dos dados no momento da execução. As alterações feitas no documento posteriormente não serão consideradas.
Dicas e truques para aprender com o Couchbase Lite
– Ouvinte de consulta: O Couchbase também fornece outro método para executar consultas que permitem que os usuários não apenas recuperem dados da consulta criada, mas também ouçam futuras alterações. Fazer isso é tão simples quanto o primeiro método. Dê uma olhada!
1 2 3 |
deixar token = consulta.addChangeListener { queryChange em resultado = queryChange.resultados?.allResults() } |
O ouvinte será chamado toda vez que os documentos incluídos no resultado da consulta forem alterados. O token retornado do addChangeListener
podem ser usados para interromper a escuta da seguinte forma:
1 |
consulta.removeChangeListener(comToken: token) |
– Conversão de documentos: Quanto à criação, você pode converter facilmente um documento em um dicionário (e vice-versa) usando toDictionary() método.
U como atualização
Agora que podemos criar e ler documentos no Couchbase, vamos atualizar nosso documento.
A atualização de um documento é muito semelhante à criação de um. Você só precisa obter um documento para atualizar, depois atualizá-lo e salvá-lo novamente. Vamos ver como.
Inicie o banco de dados:
1 2 3 4 5 |
fazer { banco de dados = tentar Banco de dados(nome: "DatabaseName" (nome do banco de dados)) } captura { fatalError("Erro ao abrir o banco de dados") } |
Recupere o documento a ser atualizado:
1 |
deixar doc = banco de dados.documento(comID: "MyUniqueDocumentIdentifier") |
Edite-o.
1 2 |
deixar docToUpdate = doc.toMutable() docToUpdate.setString("Masculino", forKey: "gênero") |
E, é claro, salve-o:
1 2 3 4 5 |
fazer { tentar banco de dados.salvarDocumento(docToUpdate, concurrencyControl: .lastWriteWins) } captura { fatalError("Erro ao atualizar o documento") } |
D como Excluir
Por último, mas não menos importante, talvez você queira excluir alguns documentos, veja como isso pode ser feito.
Como sempre, precisamos do banco de dados.
1 2 3 4 5 |
fazer { banco de dados = tentar Banco de dados(nome: "DatabaseName" (nome do banco de dados)) } captura { fatalError("Erro ao abrir o banco de dados") } |
Da mesma forma que a operação de atualização, devemos recuperar o documento a ser excluído. Portanto, você usará o método document by id.
1 |
deixar doc = banco de dados.documento(comID: "MyUniqueDocumentIdentifier") |
Agora podemos usar o excluir para excluir um documento. Assim como no salvarDocumentoSe o conflito for resolvido, podemos optar por resolvê-lo manual ou automaticamente.
1 2 3 4 5 |
fazer { tentar banco de dados.deleteDocument(doc, concurrencyControl: .lastWriteWins) } captura { fatalError("Erro ao excluir documento") } |
O Couchbase Sync Gateway é tão fácil de aprender quanto o Couchbase Lite
Agora podemos integrar o Couchbase Lite em nossos aplicativos usando CRUD:
- Criar um documento
- Ler um documento (ou vários) com atualizações em tempo real, se quisermos
- Atualizar um documento (não é tão diferente da criação)
- Excluir um documento
Mas há mais. O Couchbase oferece outro recurso maravilhoso: Sync Gateway
Sincronização
A sincronização é uma das minhas funcionalidades favoritas do Couchbase porque é tão simples quanto eficaz. O Couchbase Lite fornece essa funcionalidade para configurar um banco de dados remoto.
Vamos nos aprofundar no código.
Além do nosso banco de dados, precisamos de outro objeto: o replicador.
1 2 3 4 5 |
fazer { banco de dados = tentar Banco de dados(nome: DatabaseName) } captura { fatalError("Erro ao abrir o banco de dados") } |
O que eu preciso para iniciar um objeto replicador (CouchbaseLiteSwift.Replicator) é um objeto de configuração em que o único campo obrigatório é a url do Sync Gateway.
Os outros campos opcionais incluem replicatorTypeonde os usuários podem escolher se a replicação deve funcionar para cima, para dentro, para baixo ou ambos. Outro campo é contínuoum sinalizador que permite que os usuários configurem se a replicação deve ou não ser executada uma vez ou continuamente.
1 2 3 4 5 6 |
deixar targetEndpoint = URLEndpoint(url: "ws://localhost:4984/bucketname/") deixar replConfig = ReplicatorConfiguration(banco de dados: banco de dados, alvo: targetEndpoint) replConfig.replicatorType = .pushAndPull replConfig.contínuo = verdadeiro replConfig.autenticador = BasicAuthenticator(nome de usuário: Nome de usuário, senha: Senha) replicador = Replicador(configuração: replConfig) |
Com o replicador precisamos apenas iniciar a replicação.
1 |
replicador.iniciar() |
Ou interromper a replicação.
1 |
replicador.parar() |
Dicas e truques para aprender com o Sync
– Status da replicação de escuta: Tanto para a consulta quanto para a replicação, podemos adicionar um ouvinte para receber alterações no status da replicação. Abaixo está o código.
1 2 3 |
deixar token = replicador.addChangeListener { mudanças em status = mudanças.status } |
Quanto às consultas, o token deve ser usado para remover o ouvinte do replicador.
1 |
replicador.removeChangeListener(comToken: token) |
Conclusão, o Couchbase Lite é fácil de aprender
O Couchbase Lite, como parte do pacote Couchbase Mobile, é uma flecha poderosa na aljava de um desenvolvedor móvel. É fácil de aprender e, neste artigo, mostramos apenas uma pequena parte de seu potencial, portanto, minha recomendação é que você se aprofunde nas funcionalidades do Couchbase que lhe permitirão integrar facilmente e assumir o controle total do banco de dados que dá suporte aos seus aplicativos móveis.
Sobre Matteo Sist, @MOLO17
Matteo começou a colaborar com MOLO17 como desenvolvedor Android quando estava no ensino médio (por meio de um curso de Tecnologia da Informação). Recrutado em 2015, ele se juntou à equipe de desenvolvimento móvel, assumindo a função de desenvolvedor principal para as plataformas iOS e Android. Tem habilidade em linguagens para desenvolvimento de aplicativos móveis nativosEm sua carreira, ele projetou e desenvolveu várias soluções bem-sucedidas para dispositivos móveis voltados para consumidores e empresas, desde Java e Objective-C até as mais recentes Kotlin e Swift. Em 2016, tornou-se líder técnico gerenciando a equipe de desenvolvimento de aplicativos móveis e, em 2019, foi cofundador da MobileBridge (uma empresa irmã da MOLO17).