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);
}
});