Bmob Backend-Cloud — Haupteinstieg
Bmob ist eine BaaS-Plattform (Backend as a Service), die gebrauchsfertige Backend-Funktionen wie NoSQL-Datenbank, Benutzersystem, Dateispeicher, Cloud-Funktionen, Push, SMS, Zahlungen, IM und KI bietet. Die Clients unterstützen JavaScript / Android / iOS / Swift / Flutter / HarmonyOS / Mini-Programme / Python / Go / PHP / C# sowie die sprachunabhängige REST API und den MCP Server.
Routing-Reihenfolge: Zuerst den untenstehenden Entscheidungsbaum durchlaufen → dann die Routing-Entscheidungstabelle (Sub-Skill auswählen) → konkrete Operationen siehe shared/operation-routing.md (MCP / curl / SDK·REST-dreifach-Kanal-Vergleich).
Kernprinzipien
1. Immer zuerst die Plattform bestätigen, bevor Code geschrieben wird. Die API-Formen der Bmob-SDKs unterscheiden sich stark (JS ist Bmob.Query, Android ist extends BmobObject, altes iOS ist BmobObject objectWithClassName, reines Swift ist try await BmobObject.save(), REST ist HTTP /1/classes/<name>). Stecke keinen JS-Code in eine Android-Skill-Antwort. Prüfe zuerst, welche Plattform / welches Framework der Benutzer verwendet, und lies dann das entsprechende Sub-Skill.
2. Master Key niemals im Frontend preisgeben. Die Bmob-Konsole → App-Schlüssel enthält vier Werte:
| Schlüssel | Sicherheitsstufe | Verwendungsszenario |
|---|---|---|
| Application ID | Öffentlich | Alle Endpunkte |
| REST API Key | Halböffentlich | Browser / Mini-Programme / Mobil / Server |
| Secret Key | Mittel | Verschlüsselte Autorisierungsszenarien für Client, zusammen mit SecurityCode |
| Master Key | Höchste | Nur Server / Hintergrundskripte, niemals im Frontend-Bundle |
3. Vor dem Schreiben immer das Changelog prüfen. SDKs entwickeln sich weiter, Methodensignaturen ändern sich. Vor Beginn einer Aufgabe die update_log.md der entsprechenden Plattform per Raw-URL abrufen (Pfad siehe metadata.docs_raw im Sub-Skill), um sicherzustellen, dass es keine Breaking Changes gibt.
4. Bei Fehlern nicht wiederholt wiederholen. Nach 2-3 fehlgeschlagenen Versuchen anhalten und neu bewerten:
- HTTP 4xx: Zuerst den
codeim Antwortbody zur Überprüfung anbmob-error-codesweiterleiten. - Berechtigungs-/ACL-Fehler (9015, 9016 usw.): Siehe unten P1 temporärer Pfad oder zukünftig
bmob-acl-and-roles. - "Methode nicht gefunden": Möglicherweise ist die SDK-Version zu alt oder die Dokumentation passt nicht zu Ihrer Version. Vergleichen Sie die Release-Seite des Repos.
Entscheidungsbaum (zuerst hier durchlaufen)
flowchart TD
Start([Benutzer erwähnt Bmob]) --> Err{Antwort enthält Fehler-Code?}
Err -->|Ja| EC[bmob-error-codes]
Err -->|Nein| Ship{Soll Code in die App<br/>und veröffentlicht werden?}
Ship -->|Nein| McpCfg{IDE hat Bmob MCP konfiguriert?}
McpCfg -->|Ja| MCP[bmob-mcp<br/>9 aufrufbare Tools]
McpCfg -->|Nein| RestOnly[bmob-database-restful<br/>oder generate_code benötigt MCP]
Ship -->|Ja| Plat{Plattform / Sprache?}
Plat -->|JS Web Node Mini-Programm Cocos JS usw.| 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 usw.| REST[bmob-database-restful]
Plat -->|RN Uni-app JS Bridge| JS
JS --> Schema{Echte Tabellenfeldnamen benötigt?}
AND --> Schema
SWIFT --> Schema
IOS --> Schema
FLUT --> Schema
REST --> Schema
Schema -->|Ja und MCP konfiguriert| MCP
Schema -->|Nein| Done([Entsprechendes Sub-Skill lesen und Code schreiben])
MCP --> OpTable[[shared/operation-routing.md<br/>Operations-Dreifachkanal-Tabelle]]
Routing-Entscheidungstabelle (nach Treffer sofort das entsprechende Sub-Skill lesen)
| Benutzerintention | Plattform-Hinweise | Route zu |
|---|---|---|
| Neue/Ansicht Tabellenstruktur, Testdaten hinzufügen, curl-Vorlage generieren, Datenbank bearbeiten | — | bmob-mcp (Voraussetzung: Benutzer hat MCP konfiguriert) |
| Webseite mit einem Klick bereitstellen / statisches Hosting (HTML oder dist zu CDN) | — | bmob-mcp → deploy_static_site (oder generate_code nur für curl) |
| NoSQL CRUD, Bedingungsabfragen | JS / TS / Web / Node / WeChat/Alipay/Byte/QQ/Baidu Mini-Programm / Quick App / Cocos Creator JS / Electron / Tauri / Hybrid App | bmob-database-javascript |
| NoSQL CRUD | Android / Kotlin / Java | bmob-database-android |
| NoSQL CRUD | Reines Swift SDK / BmobSwiftSDK / SPM / import BmobSDK / async/await | bmob-database-swift |
| NoSQL CRUD | Altes iOS SDK / Objective-C / Swift Bridging Header / BmobSDK.xcframework / saveInBackground | bmob-database-ios |
| NoSQL CRUD | Flutter / Dart (bmob_plugin) | bmob-database-flutter |
| NoSQL CRUD / beliebige Sprache ohne SDK | curl / Python / Go / PHP / C# / Rust / Ruby / Java Backend | bmob-database-restful |
| React Native / Uni-app (JS-Schicht verbindet Bmob) | — | bmob-database-javascript oder REST |
| HarmonyOS ArkTS | — | bmob-database-restful + BmobDocs |
| Benutzerregistrierung / Login / SMS-Verifizierung / Drittanbieter-Login / E-Mail-Verifizierung | Alle Endpunkte | bmob-auth-{platform} (P1, siehe Tabelle unten) |
| Datei Upload/Download / CDN | Alle Endpunkte | bmob-storage-{platform} (P1, siehe Tabelle unten) |
| Cloud-Funktion aufrufen | Alle Endpunkte | bmob-cloud-function-{platform} (P1, siehe Tabelle unten) |
| Cloud-Funktionscode schreiben, der auf Bmob-Servern läuft | — | bmob-cloud-function-development |
| ACL / Rollen / Berechtigungen / Zeilen-Sicherheit | — | bmob-acl-and-roles (P1, siehe Tabelle unten) |
| BQL-Abfragen (SQL-ähnliche Syntax) | Beliebig | bmob-bql (P1, siehe Tabelle unten) |
| Fehlercodes 9015 / 101 / 105 usw. beheben | — | bmob-error-codes |
| Push / SMS / Zahlungen | Alle Endpunkte | bmob-push-* / bmob-sms-* / bmob-pay-* (P2) |
Welcher Kanal für konkrete Operationen (CRUD, Login, Upload, Deployment) verwendet wird, siehe shared/operation-routing.md.
Temporärer Pfad für noch nicht veröffentlichte P1 / P2 Sub-Skills
Wenn spezielle Sub-Skills nicht installiert sind, nicht warten, sondern gemäß dieser Tabelle degrieren:
| Benutzerintention | Ziel-Skill (nicht veröffentlicht) | Derzeit verfügbarer Ersatz |
|---|---|---|
| Registrierung / Login / SMS-Verifizierungscode | bmob-auth-* | REST: bmob-database-restful/references/users.md; MCP konfiguriert: generate_code (Registrierung / Benutzername-Passwort-Login / Handynummer-Verifizierungscode-Login usw.) |
| Datei-Upload / CDN URL | bmob-storage-* | REST: references/files.md; MCP: generate_code → Datei hochladen |
| Vorhandene Cloud-Funktion aufrufen | bmob-mcp → invoke_cloud_function (Ausführung); generate_code → Cloud-Funktion aufrufen (curl) | REST /1/functions/<name>; SDKs aller Endpunkte |
| Cloud-Funktionsquellcode schreiben und bereitstellen | bmob-cloud-function-development | MCP konfiguriert: deploy_cloud_function → invoke_cloud_function; MCP nicht konfiguriert: BmobDocs + Konsole |
| ACL / Zeilenberechtigungen / 9015·9016 | bmob-acl-and-roles | REST: "ACL":{...} im Body von Create/Update; bmob-error-codes |
| BQL / übergreifende Aggregationen | bmob-bql | REST GET /1/cloudQuery; bmob-database-restful |
| Push / SMS / Zahlungen | P2 Skills | REST entsprechendes Modul + BmobDocs mds Verzeichnisbaum |
Allgemeine Sicherheits-Checkliste (wird von allen Sub-Skills inkludiert)
- Die Zieltabelle von Schreiboperationen muss mit ACL versehen sein, sonst kann jeder Benutzer jede Zeile ändern (siehe Zeile zu ACL im temporären P1-Pfad).
- Browser / Mini-Programm / Mobil können REST API Key (einfache Autorisierung / SDK-Modus B) oder Secret Key + SecurityCode (verschlüsselte Autorisierung / SDK-Modus A) verwenden; niemals den Master Key verwenden.
- Der
SecurityCodein verschlüsselten Autorisierungsszenarien wird nicht über das Netzwerk übertragen; nicht im Frontend-Bundle hartcodieren, sondern über Umgebungsvariablen injizieren oder in BFF ablegen. - Für Batch / Volltabellenscan / übergreifende Abfragen → bevorzugt BQL statt Schleifen mit SDK verwenden.
- Bei Fehlern zuerst das
code-Feld im Antwortbody prüfen und inbmob-error-codesnachschlagen, nicht raten. - Das Benutzerpasswortfeld (
password) kann nur von Bmob geschrieben, nicht aktualisiert werden; für Passwortänderung/1/updateUserPassword/<objectId>verwenden.
FAQ und Anti-Patterns
- Plattformübergreifende häufige Fragen (Routing, Schlüssel, MCP, Datenformat):
shared/faq.md - Typische Anti-Patterns (ACL, Master Key, 9015-Fehlanwendung usw.):
shared/anti-patterns.md - Nach englischem Error die Nummer nachschlagen: Tabelle „Nach Phänomen nachschlagen" oben in
bmob-error-codes
Rezepte für Anwendungsszenarien
Ende-zu-Ende-Szenarien (Tabellendesign + ACL + Ablauf), dann in das jeweilige Plattform-Skill gehen und Code schreiben:
| Szenario | Rezept |
|---|---|
| Blog / CMS (Article + Author) | shared/recipes/blog-cms.md |
| Benutzereigene Todos (Zeilen-ACL) | shared/recipes/user-owned-todos.md |
| WeChat Mini-Programm Login | shared/recipes/mini-program-login.md |
| Avatar-Upload | shared/recipes/avatar-upload.md |
| Server-seitige Batch-Migration | shared/recipes/server-migration.md |
| Statische Seite via MCP deployen | shared/recipes/static-site-deploy.md |
Methoden zum Auffinden von Dokumentationen
Die references/snippets/ jedes Sub-Skills (durch BmobDocs-Synccommit) und handgeschriebene references/*.md decken die meisten APIs ab. Falls noch nicht ausreichend, die übergeordnete Dokumentation abrufen:
-
Nach Dateinamen lokalisieren: Der übergeordnete Dokumentationsbaum befindet sich unter github.com/bmob/BmobDocs/tree/master/mds, organisiert nach
<feature>/<platform>/. -
Agent direkt abrufen (GitHub-Rendering umgehen):
https://raw.githubusercontent.com/bmob/BmobDocs/master/mds/<feature>/<platform>/<filename>.mdEs wurde verifiziert, dass dies mit dem WebFetch-Tool direkt als reines Markdown abgerufen werden kann.
-
Verzeichnis auflisten (wenn der Dateiname unbekannt ist):
https://api.github.com/repos/bmob/BmobDocs/contents/mds/<feature>/<platform> -
Immer noch nicht gefunden: Unter https://www.bmobapp.com/docs/ nachschlagen.
Zusammenarbeit mit dem MCP (entscheidend)
Wenn der Benutzer in der IDE einen Bmob MCP Server konfiguriert hat (siehe shared/mcp-install-snippets.md), sollten alle Aufgaben, die „echte Tabellenstruktur lesen / Testdaten schreiben / Schema entwerfen / curl-Vorlage generieren / Webseite mit einem Klick bereitstellen" betreffen, bevorzugt den MCP verwenden, nicht auf Verdacht Feldnamen schreiben.
tools/listinsgesamt 10 Tools; der Agent ruft nur 9 davon auf (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_postist eine interne Serverschleife, nicht aufrufen.- Tool-Parameter und Dialogvorlage:
bmob-mcp; Operations-Dreifachkanal-Tabelle:shared/operation-routing.md.
flowchart LR
User[User prompt mentioning Bmob] --> Root[bmob root SKILL.md]
Root --> OpRoute[shared/operation-routing.md]
Root -->|"schema / live CRUD / deploy"| McpSkill[bmob-mcp]
Root -->|JS / Web / Mini Program| JsDb[bmob-database-javascript]
Root -->|Android / Kotlin| AndDb[bmob-database-android]
Root -->|Pure Swift SDK| SwiftDb[bmob-database-swift]
Root -->|Legacy iOS / ObjC| IosDb[bmob-database-ios]
Root -->|Flutter / Dart| FlutDb[bmob-database-flutter]
Root -->|curl / Python / Go| RestDb[bmob-database-restful]
Root -->|error code| 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
Zusammenfassung in einem Satz
Benutzer erwähnt Bmob → Entscheidungsbaum dieses Skills lesen → Routing-Entscheidungstabelle wählt Sub-Skill →
shared/operation-routing.mdwählt MCP / curl / SDK·REST; endpunkt-spezifischer Code inreferences/und SKILL.md des Sub-Skills.