Daten und Speicher
Diese Seite fasst die datenbezogenen APIs von Guida zusammen. Viele davon benötigen einen geöffneten Arbeitsbereich, weil Daten in arbeitsbereichslokalen Dateien oder Verbindungen gespeichert werden.
g.store.* - Persistenter Speicher
Abschnitt betitelt „g.store.* - Persistenter Speicher“g.store.* speichert JSON-Dokumente in store.db des Arbeitsbereichs. Dokumente liegen in benannten Sammlungen.
| Methode | Zweck |
|---|---|
g.store.put(collection, key, data) | Dokument schreiben oder aktualisieren |
g.store.get(collection, key) | Dokument lesen |
g.store.list(collection) | Dokumente einer Sammlung listen |
g.store.count(collection) | Dokumentanzahl lesen |
g.store.delete(collection, key) | Dokument löschen |
g.store.put("pages", "example", { url: "https://example.com", title: "Example", capturedAt: new Date().toISOString()});
const count = g.store.count("pages");g.log("Gespeicherte Seiten: " + count);g.queue.* - Arbeitswarteschlangen
Abschnitt betitelt „g.queue.* - Arbeitswarteschlangen“g.queue.* verwaltet dauerhafte Warteschlangen in queue.db. Queue-Items sind ausführbare Arbeit; sie können von Skripten, Workern oder Review-Ansichten verarbeitet werden.
| Methode | Zweck |
|---|---|
g.queue.enqueue(queue, data, options?) | Item einreihen |
g.queue.dequeue(queue, options?) | Item auschecken |
g.queue.commit(checkoutId) | Ausgechecktes Item abschließen |
g.queue.abort(checkoutId, reason?) | Ausgechecktes Item abbrechen |
g.queue.list(queue, options?) | Items listen |
g.queue.deadLetter(queue) | Fehlerwarteschlange lesen |
g.queue.retry(queue, deadLetterId) | Item aus Fehlerwarteschlange erneut versuchen |
g.queue.enqueue("urls", { url: "https://example.com" });
const item = g.queue.dequeue("urls");if (item) { try { await g.nav.navigateToUrl(item.data.url); await g.dom.waitForDomStable(); g.queue.commit(item.checkoutId); } catch (e) { g.queue.abort(item.checkoutId, e.message); }}Bei Worker-Skripten lesen Sie den Kontext mit g.worker.getContext() und schließen das Item danach explizit ab. Details stehen unter Warteschlangen-Worker.
g.search.* - Volltextsuche
Abschnitt betitelt „g.search.* - Volltextsuche“g.search.* erstellt einen arbeitsbereichslokalen Lucene.NET-Index unter search-index/.
g.search.index("pages", "example", { title: "Example", body: "Dies ist ein extrahierter Seitentext.", url: "https://example.com"});
const hits = g.search.query("pages", "Seitentext");g.log("Treffer: " + hits.length);Nutzen Sie den lokalen Index, wenn extrahierte Inhalte im Arbeitsbereich durchsuchbar bleiben sollen. Für externe Suchcluster siehe Suchmaschinen.
g.s3.* - S3-kompatibler Speicher
Abschnitt betitelt „g.s3.* - S3-kompatibler Speicher“S3-Verbindungen werden als verschlüsselte Zugangsdaten gespeichert. Skripte referenzieren nur den Verbindungsnamen.
| Methode | Zweck |
|---|---|
g.s3.putObjectText(conn, bucket, key, content, contentType?) | Text als Objekt hochladen |
g.s3.putObject(conn, bucket, key, localPath, contentType?) | Lokale Datei hochladen |
g.s3.getObjectText(conn, bucket, key) | Textobjekt lesen |
g.s3.getPresignedUrl(conn, bucket, key, options?) | Vorsignierte URL erzeugen |
await g.s3.putObjectText( "my-s3", "scraping-results", "exports/products.json", JSON.stringify({ ok: true }), "application/json");g.mongodb.*
Abschnitt betitelt „g.mongodb.*“MongoDB eignet sich für flexible Dokumente, Aggregationen und Bulk-Operationen.
await g.mongodb.insertMany("my-mongo", "scraping", "products", [ { name: "Widget A", price: 9.99 }, { name: "Widget B", price: 14.99 }]);
const docs = await g.mongodb.find("my-mongo", "scraping", "products", { price: { $lt: 20 }});g.postgres.*
Abschnitt betitelt „g.postgres.*“PostgreSQL eignet sich für relationale Daten, Transaktionen und Bulk-Importe. Abfragen verwenden Parameter ($1, $2, …).
const rows = await g.postgres.query("my-pg", "SELECT id, name FROM products WHERE category = $1", ["electronics"]);g.log("Zeilen: " + rows.length);g.elasticsearch.*
Abschnitt betitelt „g.elasticsearch.*“Elasticsearch-Verbindungen werden über das Secrets-Panel gespeichert und per Name referenziert.
const hits = await g.elasticsearch.search("my-es", "products", { query: { match: { title: "widget" } }});Sicherheit
Abschnitt betitelt „Sicherheit“Externe Datenintegrationen lösen verschlüsselte Zugangsdaten auf. Skripte, die von MCP gestartet wurden, dürfen diese APIs nicht nutzen. Das verhindert, dass ein KI-Agent durch ein Skript Zugriff auf Datenbank- oder Cloud-Zugangsdaten erhält.
Nächste Schritte
Abschnitt betitelt „Nächste Schritte“- Arbeitsbereiche - lokale Dateien und Konfiguration
- Zugangsdaten - verschlüsselte Verbindungsdaten
- Datenbankintegrationen - externe Datenquellen im Detail
- Warteschlangen und Prüfung - Queue-Betrieb