Bmob 后端云 — Entrada Principal
Bmob é uma plataforma BaaS (Backend as a Service) que oferece banco de dados NoSQL, sistema de usuários, armazenamento de arquivos, funções em nuvem, push, SMS, pagamentos, IM, AI e outras capacidades de backend prontas para uso. Os clientes cobrem JavaScript / Android / iOS / Swift / Flutter / HarmonyOS / Mini Programas / Python / Go / PHP / C#, além da REST API independente de linguagem e do MCP Server.
Ordem de roteamento: Primeiro siga a Árvore de Decisão de Entrada abaixo → depois consulte a Tabela de Decisão de Roteamento (selecione sub-skill) → para operações específicas, veja shared/operation-routing.md (tabela de três canais: MCP / curl / SDK·REST).
Princípios Fundamentais
1. Sempre confirme a plataforma antes de escrever código. As APIs dos SDKs do Bmob variam muito entre as plataformas (JS é Bmob.Query, Android é extends BmobObject, iOS antigo é BmobObject objectWithClassName, Swift puro é try await BmobObject.save(), REST é HTTP /1/classes/<name>). Não insira código JS na resposta de um skill Android. Primeiro veja qual plataforma/framework o usuário está usando, depois leia o sub-skill correspondente.
2. Não vaze a Master Key no front-end. O console Bmob → Chaves de Aplicativo contém quatro valores:
| Chave | Nível de Segurança | Cenário de Uso |
|---|---|---|
| Application ID | Público | Todos os endpoints |
| REST API Key | Semipúblico | Navegador / Mini Programas / Mobile / Servidor |
| Secret Key | Médio | Cliente em cenários de autorização criptografada, com SecurityCode |
| Master Key | Mais Alto | Apenas servidor / scripts de backend, nunca aparece no bundle front-end |
3. Veja o changelog antes de escrever. Os SDKs evoluem e as assinaturas dos métodos mudam. Antes de iniciar uma tarefa, use a URL raw para buscar o update_log.md da plataforma correspondente (caminho em metadata.docs_raw do sub-skill) e confirme que não há alterações que quebrem compatibilidade.
4. Não repita tentativas de erro em loop. Após 2-3 tentativas falhas, pare e reavalie:
- HTTP 4xx: Primeiro consulte o
codeno corpo da resposta nobmob-error-codes. - Erros de permissão/ACL (9015, 9016 etc.): Veja o Caminho Temporário P1 abaixo ou o futuro
bmob-acl-and-roles. - "Método não encontrado": Pode ser versão do SDK muito antiga ou documentação incompatível com a versão que você está usando. Compare na página de releases do repositório.
Árvore de Decisão de Entrada (siga por aqui primeiro)
flowchart TD
Start([Usuário menciona Bmob]) --> Err{Há código de erro na resposta?}
Err -->|Sim| EC[bmob-error-codes]
Err -->|Não| Ship{O código será enviado ao aplicativo em produção?}
Ship -->|Não| McpCfg{IDE configurada com MCP Bmob?}
McpCfg -->|Sim| MCP[bmob-mcp<br/>9 ferramentas disponíveis]
McpCfg -->|Não| RestOnly[bmob-database-restful<br/>ou generate_code precisa de MCP]
Ship -->|Sim| Plat{Plataforma / Linguagem?}
Plat -->|JS Web Node Mini Program Cocos JS etc.| JS[bmob-database-javascript]
Plat -->|Android Kotlin Java| AND[bmob-database-android]
Plat -->|Pure Swift BmobSwiftSDK async/await| SWIFT[bmob-database-swift]
Plat -->|Legacy iOS ObjC Swift Bridging Header| IOS[bmob-database-ios]
Plat -->|Flutter Dart| FLUT[bmob-database-flutter]
Plat -->|curl Python Go PHP Backend etc.| REST[bmob-database-restful]
Plat -->|RN Uni-app JS Bridge| JS
JS --> Schema{Precisa de nomes de campos reais?}
AND --> Schema
SWIFT --> Schema
IOS --> Schema
FLUT --> Schema
REST --> Schema
Schema -->|Sim e MCP configurado| MCP
Schema -->|Não| Done([Leia o sub-skill correspondente e escreva o código])
MCP --> OpTable[[shared/operation-routing.md<br/>Tabela de três canais por operação]]
Tabela de Decisão de Roteamento (após acertar, vá imediatamente ler o sub-skill correspondente)
| Intenção do Usuário | Pista de Plataforma | Roteamento para |
|---|---|---|
| Criar/ver estrutura de tabela, adicionar dados de teste, gerar modelo curl, operar banco de dados | — | bmob-mcp (pré-requisito: usuário configurou MCP) |
| Implantar site de uma página / hospedagem estática (HTML ou dist para CDN) | — | bmob-mcp → deploy_static_site (ou generate_code apenas para gerar curl) |
| CRUD NoSQL, consultas condicionais | JS / TS / Web / Node / Mini Programas WeChat/Alipay/ByteDance/QQ/Baidu / Quick Apps / Cocos Creator JS / Electron / Tauri / App Híbrido | bmob-database-javascript |
| CRUD NoSQL | Android / Kotlin / Java | bmob-database-android |
| CRUD NoSQL | SDK Swift puro / BmobSwiftSDK / SPM / import BmobSDK / async/await | bmob-database-swift |
| CRUD NoSQL | SDK iOS antigo / Objective-C / Swift Bridging Header / BmobSDK.xcframework / saveInBackground | bmob-database-ios |
| CRUD NoSQL | Flutter / Dart (bmob_plugin) | bmob-database-flutter |
| CRUD NoSQL / qualquer linguagem sem SDK | curl / Python / Go / PHP / C# / Rust / Ruby / Backend Java | bmob-database-restful |
| React Native / Uni-app (camada JS conectando Bmob) | — | bmob-database-javascript ou REST |
| HarmonyOS ArkTS | — | bmob-database-restful + BmobDocs |
| Registro de usuário / Login / SMS / Login de terceiros / Verificação de e-mail | Todos os endpoints | bmob-auth-{platform} (P1, veja tabela abaixo) |
| Upload/Download de arquivos / CDN | Todos os endpoints | bmob-storage-{platform} (P1, veja tabela abaixo) |
| Invocar função em nuvem | Todos os endpoints | bmob-cloud-function-{platform} (P1, veja tabela abaixo) |
| Escrever código de função em nuvem para executar no servidor Bmob | — | bmob-cloud-function-development |
| ACL / Papéis / Permissões / Segurança em nível de linha | — | bmob-acl-and-roles (P1, veja tabela abaixo) |
| Consulta BQL (sintaxe tipo SQL) | Qualquer | bmob-bql (P1, veja tabela abaixo) |
| Depurar erros code 9015 / 101 / 105 etc. | — | bmob-error-codes |
| Push / SMS / Pagamentos | Todos os endpoints | bmob-push-* / bmob-sms-* / bmob-pay-* (P2) |
Para operações específicas (CRUD, login, upload, implantação) e qual canal usar, veja shared/operation-routing.md.
Caminho Temporário para P1 / P2 Ainda Não Publicados
Quando o sub-skill dedicado não estiver instalado, não espere, use esta tabela de fallback:
| Intenção do Usuário | Skill Alvo (não publicado) | Alternativa Disponível Agora |
|---|---|---|
| Registro / Login / Código de verificação SMS | bmob-auth-* | REST: bmob-database-restful/references/users.md; com MCP configurado: generate_code (registro / login com nome de usuário e senha / login com código de verificação de celular etc.) |
| Upload de arquivos / URL CDN | bmob-storage-* | REST: references/files.md; MCP: generate_code → upload de arquivo |
| Invocar função em nuvem existente | bmob-mcp → invoke_cloud_function (execução); generate_code → invocar função em nuvem (curl) | REST /1/functions/<name>; SDKs de cada endpoint |
| Escrever e implantar código de função em nuvem | bmob-cloud-function-development | Com MCP configurado: deploy_cloud_function → invoke_cloud_function; sem MCP: BmobDocs + console |
| ACL / permissões em nível de linha / 9015·9016 | bmob-acl-and-roles | REST: no corpo de criação/atualização, use "ACL":{...}; bmob-error-codes |
| BQL / agregação entre tabelas | bmob-bql | REST GET /1/cloudQuery; bmob-database-restful |
| Push / SMS / Pagamentos | P2 skills | Módulos REST correspondentes + árvore de diretórios mds do BmobDocs |
Lista de Verificação de Segurança Geral (incluída por todos os sub-skills)
- A tabela alvo de operações de escrita deve ter ACL configurada, caso contrário qualquer usuário pode modificar qualquer linha (veja a linha ACL no Caminho Temporário P1).
- Navegador / Mini Programas / Mobile podem usar REST API Key (autorização simples / modo B do SDK) ou Secret Key + Código de Segurança (autorização criptografada / modo A do SDK); nunca use Master Key.
- O
SecurityCodeem cenários de autorização criptografada não é transmitido pela rede; não o codifique no bundle front-end, use variáveis de ambiente ou injete via BFF. - Sempre que for batch / varredura de tabela inteira / consulta entre tabelas → prefira BQL em vez de chamadas em loop ao SDK.
- Em caso de erro, primeiro veja o campo
codeno corpo da resposta e consultebmob-error-codes, não adivinhe. - O campo de senha do usuário (
password) só pode ser escrito pelo Bmob, não pode ser atualizado; para alteração de senha, use/1/updateUserPassword/<objectId>.
FAQ e Antipadrões
- Perguntas frequentes entre plataformas (roteamento, chaves, MCP, formato de dados):
shared/faq.md - Antipadrões típicos (ACL, Master Key, uso incorreto de 9015 etc.):
shared/anti-patterns.md - Buscar código numérico por mensagem de erro em inglês: Tabela "Buscar por fenômeno" no topo de
bmob-error-codes
Receitas de Cenários de Aplicação
Cenários de ponta a ponta (design de tabela + ACL + fluxo), depois vá para o skill da plataforma para escrever o código:
| Cenário | Receita |
|---|---|
| Blog / CMS (Article + Author) | shared/recipes/blog-cms.md |
| Todo do próprio usuário (ACL em nível de linha) | shared/recipes/user-owned-todos.md |
| Login em Mini Programa WeChat | shared/recipes/mini-program-login.md |
| Upload de avatar | shared/recipes/avatar-upload.md |
| Migração em lote no servidor | shared/recipes/server-migration.md |
| Implantação de site estático via MCP | shared/recipes/static-site-deploy.md |
Método de Busca de Documentação
Os references/snippets/ de cada sub-skill (sincronizados pelo BmobDocs) e os references/*.md escritos manualmente cobrem a maioria das APIs. Se ainda precisar, busque a documentação upstream:
-
Localize pelo nome do arquivo: A árvore de documentação upstream está em github.com/bmob/BmobDocs/tree/master/mds, organizada por
<feature>/<platform>/. -
Fetch direto pelo agente (ignorando a camada de renderização do GitHub):
https://raw.githubusercontent.com/bmob/BmobDocs/master/mds/<feature>/<platform>/<filename>.mdJá validado que pode ser obtido diretamente como markdown puro pela ferramenta WebFetch.
-
Listar diretórios (quando não souber o nome do arquivo):
https://api.github.com/repos/bmob/BmobDocs/contents/mds/<feature>/<platform> -
Ainda não encontrou: Vá para https://www.bmobapp.com/docs/.
Colaboração com o MCP (Crítico)
Se o usuário configurou o Bmob MCP Server na IDE (veja shared/mcp-install-snippets.md), qualquer tarefa que envolva "ler estrutura real da tabela / escrever dados de teste / projetar schema / gerar curl modelo / implantar site de uma página" deve priorizar o MCP, não adivinhar nomes de campos.
tools/listtotal de 10 ferramentas; o agente invoca apenas 9 delas (get_project_tables,create_table,add_single_data,update_single_data,delete_single_data,generate_code,deploy_cloud_function,invoke_cloud_function,deploy_static_site).mcp_endpoint_mcp_posté um loopback interno do servidor, não invoque.- Parâmetros das ferramentas e correspondência de frases:
bmob-mcp; tabela de três canais por operação:shared/operation-routing.md.
flowchart LR
User[Prompt do usuário mencionando Bmob] --> Root[SKILL.md raiz bmob]
Root --> OpRoute[shared/operation-routing.md]
Root -->|"schema / CRUD ao vivo / implantação"| McpSkill[bmob-mcp]
Root -->|JS / Web / Mini Program| JsDb[bmob-database-javascript]
Root -->|Android / Kotlin| AndDb[bmob-database-android]
Root -->|SDK Swift puro| SwiftDb[bmob-database-swift]
Root -->|iOS antigo / ObjC| IosDb[bmob-database-ios]
Root -->|Flutter / Dart| FlutDb[bmob-database-flutter]
Root -->|curl / Python / Go| RestDb[bmob-database-restful]
Root -->|código de erro| Err[bmob-error-codes]
McpSkill -.get_project_tables.-> JsDb
McpSkill -.get_project_tables.-> AndDb
McpSkill -.get_project_tables.-> SwiftDb
McpSkill -.get_project_tables.-> IosDb
McpSkill -.get_project_tables.-> FlutDb
McpSkill -.get_project_tables.-> RestDb
Resumo em uma frase
Usuário menciona Bmob → Leia a Árvore de Decisão de Entrada deste skill → Tabela de Decisão de Roteamento selecione sub-skill →
shared/operation-routing.mdselecione MCP / curl / SDK·REST; código específico da plataforma está emreferences/e SKILL.md do sub-skill.