Implementação e Gerenciamento de WeChat Mini Program Cloud Development

Introdução ao Cloud Development

O ecossistema de Cloud Development para WeChat Mini Programs oferece uma infraestrutura serverless que permite aos desenvolvedores gerenciar banco de dados, armazenamento de arquivos e funções de backend diretamente do ambiente de desenvolvimento, sem a necessidade de configurar servidores tradicionais.

Configuração Inicial

Para começar a utilizar os recursos de nuvem, é necessário inicializar o ambiente no arquivo app.js do projeto:

wx.cloud.init({
  env: 'producao-id-8899',
  traceUser: true
})

Gerenciamento de Banco de Dados NoSQL

A base de dados do Cloud Development é orientada a documentos (JSON) e suporta tipos de dados como String, Number, Boolean, Array, Object, Date e GeoPoint.

Níveis de Permissão: O acesso é dividido entre o lado do cliente (Mini Program) e o lado da gestão (Cloud Functions e Console), onde o lado da gestão possui privilégios totais de leitura e escrita.

Instanciação e Acesso

const db = wx.cloud.database();
const colecaoTarefas = db.collection('tasks');

Inserção de Documentos

Utilize o método add para persistir novos dados na coleção:

db.collection('tasks').add({
  data: {
    titulo: 'Finalizar documentação técnica',
    prazo: new Date('2023-12-31'),
    etiquetas: ['projeto', 'urgente'],
    localizacao: new db.Geo.Point(118.10, 24.46),
    finalizado: false
  }
}).then(res => {
  console.log('Documento criado com ID:', res._id);
}).catch(err => {
  console.error('Falha na inserção:', err);
});

Recuperação de Dados

Para buscar um registro específico via identificador único:

db.collection('tasks').doc('id-exemplo-123').get({
  success: function(res) {
    console.log('Dados obtidos:', res.data);
  }
});

Consultas Filtradas (Múltiplos Registros)

No lado do cliente, as consultas são limitadas. Para filtros complexos ou retorno de grandes volumes, recomneda-se o uso de where:

db.collection('tasks').where({
  finalizado: false,
  _openid: 'user-token-id'
}).get().then(resultado => {
  console.log('Lista de pendências:', resultado.data);
});

Atualização e Remoção

// Atualização parcial
db.collection('tasks').doc('id-exemplo-123').update({
  data: {
    finalizado: true
  }
});

// Remoção de registro
db.collection('tasks').doc('id-exemplo-123').remove({
  success: res => {
    console.log('Registro excluído com sucesso');
  }
});

Cloud Functions (Lógica Serverless)

As funções de nuvem permitem executar código Node.js no lado do servidor. Primeiro, defina o diretório raiz no arquivo project.config.json:

{
  "cloudfunctionRoot": "./cloudfunctions/"
}

Definição de uma Função

Exemplo de uma função simples para processamento matemático:

const cloud = require('wx-server-sdk');
cloud.init();

exports.main = async (event, context) => {
  const { fatorA, fatorB } = event;
  return {
    resultado: fatorA * fatorB
  };
};

Invocação da Função no Mini Program

wx.cloud.callFunction({
  name: 'calcularMultiplicacao',
  data: {
    fatorA: 5,
    fatorB: 10
  }
}).then(res => {
  console.log('Resultado da Cloud Function:', res.result.resultado);
});

Cloud Storage (Armazenamento de Arquivos)

O Cloud Storage facilita o gerenciamento de mídias e documentos gerados pelos usuários.

Upload de Arquivo

wx.cloud.uploadFile({
  cloudPath: 'midia/imagem_perfil.png', 
  filePath: caminhoTemporario, 
  success: res => {
    console.log('Arquivo disponível via ID:', res.fileID);
  }
});

Download e Exclusão

// Download de arquivo via File ID
wx.cloud.downloadFile({
  fileID: 'cloud://env-id.codigo-arquivo',
  success: res => {
    console.log('Caminho local temporário:', res.tempFilePath);
  }
});

// Exclusão de arquivos em lote
wx.cloud.deleteFile({
  fileList: ['id-arquivo-01', 'id-arquivo-02'],
  success: res => {
    console.log('Arquivos removidos:', res.fileList);
  }
});

Tags: WeChat-Mini-Program Cloud-Development nosql Serverless Node.js

Publicado em 6-27 16:39