Zum Inhalt springen

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.* speichert JSON-Dokumente in store.db des Arbeitsbereichs. Dokumente liegen in benannten Sammlungen.

MethodeZweck
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.* verwaltet dauerhafte Warteschlangen in queue.db. Queue-Items sind ausführbare Arbeit; sie können von Skripten, Workern oder Review-Ansichten verarbeitet werden.

MethodeZweck
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.* 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.

S3-Verbindungen werden als verschlüsselte Zugangsdaten gespeichert. Skripte referenzieren nur den Verbindungsnamen.

MethodeZweck
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"
);

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

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

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

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.