Armazenamento de arquivos Base64 diretamente no Couchbase via Node.js

Então você está desenvolvendo um aplicativo e deseja armazenar seus arquivos no Couchbase. No momento, o Couchbase permite documentos com até 20 MB de tamanho, o que é maior do que você imagina. Por que armazenar nossos arquivos no Couchbase em vez de no sistema de arquivos? Talvez você não tenha muito espaço de armazenamento no sistema de arquivos do seu aplicativo ou, melhor ainda, talvez queira aproveitar os recursos de replicação que o Couchbase oferece para que você nunca corra o risco de perder seus dados preciosos.

Vamos dar uma olhada na aceitação de uploads de arquivos, convertendo-os em cadeias de caracteres base64 e, em seguida, armazenando as cadeias de caracteres no Couchbase junto com os metadados necessários.

Como configurar o Couchbase

O Couchbase Server será o nosso banco de dados NoSQL escolhido aqui. Como se trata de um banco de dados de documentos, o armazenamento de objetos JavaScript faz todo o sentido.

Se você ainda não tiver uma cópia do Couchbase Server 4.1 ou superior, vá para o site downloads e obtenha o binário que atenda às suas necessidades de plataforma (Mac, Linux, Windows).

Com o Couchbase instalado, precisamos adicionar algo que nos permita usar a linguagem de consulta N1QL. Precisamos adicionar um índice primário. Isso pode ser feito usando o cliente Couchbase Query (CBQ).

No Mac, inicie o CBQ executando o seguinte no Terminal:

No Microsoft Windows, o mesmo pode ser feito executando o seguinte:

Se você nunca usou o CBQ antes, verá que ele é muito parecido com a ferramenta de linha de comando do MySQL ou com o SQLPlus da Oracle. Podemos executar consultas com ele, entre outras coisas. A consulta que executaremos criará um índice primário. Execute o seguinte:

O Couchbase Server agora está pronto para ser usado com nosso aplicativo Node.js.

Configuração de um aplicativo básico do Node.js

Muito do que vemos aqui foi extraído de dois tutoriais diferentes que escrevi sobre o assunto. Uma vez demonstrei como aceitar uploads de arquivos no Node.js por meio de um aplicativo Angular 2, bem como como converter esses arquivos em dados base64. Desta vez, vamos apenas inserir os dados base64 no Couchbase Server.

Primeiro, vamos criar um novo projeto Node.js. Ele não terá um front-end, mas você pode criar o seu próprio ou usar uma ferramenta como o Postman para testes. Seu projeto deve ter os seguintes arquivos e diretórios:

Usando um Terminal (Mac e Linux) ou um Prompt de Comando (Windows), execute o seguinte no diretório do projeto:

O comando acima criará um novo package.json arquivo. Agora precisamos instalar as dependências do nosso projeto. Isso pode ser feito executando o seguinte no prompt de comando ou no terminal:

Agora podemos começar a desenvolver nosso pequeno aplicativo Node.js. Vamos mantê-lo bem simples. Na seção config.json inclui as seguintes informações sobre nosso nó do Couchbase:

Isso evitará que tenhamos que codificar nossas informações de servidor em todo o projeto.

Agora, queremos preencher nosso arquivo de lógica central do Node.js, o arquivo app.js arquivo. Vá em frente e adicione o seguinte código:

Na verdade, você chegou ao ponto em que eu parei na minha Tutorial de conversão base64 do Node.js. O problema é que agora queremos armazenar esses dados no Couchbase Server.

Inserção de dados de arquivo no Couchbase por meio de consultas N1QL

Vamos começar incluindo as várias informações de dependência que baixamos nas etapas anteriores. Na parte superior do arquivo app.js com as outras importações, inclua o seguinte:

Estamos incluindo o Couchbase, o mecanismo N1QL, nossas informações de servidor e a biblioteca para gerar valores exclusivos. Agora, antes ou acima do bloco de código para compartilhamento de recursos entre origens, adicione a seguinte linha:

Como eu disse, não importa realmente onde você a coloca, mas essa linha se conectará a um cluster do Couchbase e abrirá o bucket, ambos definidos na linha config.json arquivo.

Agora vamos ao que interessa!

Vamos alterar a função de ponto de extremidade para que os uploads sejam salvos no Couchbase antes de devolver os dados ao usuário. Vá em frente e altere a função de endpoint para que se pareça com o seguinte:

Observe que agora estamos criando um INSERIR statement? Essa é uma consulta parametrizada para evitar qualquer tipo de ataque de injeção de SQL. Os parâmetros são definidos na consulta real e são o valor de identificação exclusivo para a chave e a matriz de arquivos que criamos. Somente depois que os dados forem salvos, eles serão retornados ao usuário.

Conclusão

Sim, houve um pouco de manipulação aqui no que diz respeito aos uploads reais de arquivos, mas isso se deve ao fato de que nos preocupamos mais com a inserção no Couchbase. Também porque isso foi explicado em meu tutorial anterior. Aqui vimos como fazer uma consulta N1QL para inserir a matriz que continha todos os nossos arquivos base64 que foram carregados. Desde que o tamanho dos arquivos não ultrapasse os limites do Couchbase, essa é uma solução perfeitamente aceitável e permitirá a replicação, caso ela seja ativada.

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Nic Raboy, defensor dos desenvolvedores, Couchbase

Nic Raboy é um defensor das modernas tecnologias de desenvolvimento móvel e da Web. Ele tem experiência em Java, JavaScript, Golang e uma variedade de estruturas, como Angular, NativeScript e Apache Cordova. Nic escreve sobre suas experiências de desenvolvimento relacionadas a tornar o desenvolvimento móvel e da Web mais fácil de entender.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.