AsyncCollection-Klasse¶
Vollständige API-Referenz für die AsyncCollection-Klasse - ein verzögerter Query-Builder zum Erstellen von Abstraktionen über jede Datenquelle.
Import¶
Konstruktor¶
new AsyncCollection<T, V>(executor, validators?)¶
Erstellt eine neue AsyncCollection-Instanz mit einer benutzerdefinierten Executor-Funktion.
Typparameter:
T- Typ der Elemente in der SammlungV- Typ der benutzerdefinierten Validatoren (optional)
Parameter:
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
executor | Executor<T, V> | Ja | Funktion, die Operationen verarbeitet und Ergebnisse zurückgibt |
validators | V | Nein | Benutzerdefinierte Validatoren zur Erweiterung von Abfrageoperatoren |
Beispiel:
const users = new AsyncCollection<User>(
async ({ operations, validators, metadata }) => {
console.log(`Verarbeite ${metadata.operation_count} Operationen`);
return await processOperations(operations);
}
);
Typdefinitionen¶
Executor<T, V>¶
Funktionstyp für den Executor, der den Kontext verarbeitet.
ExecutorContext<T, V>¶
Kontextobjekt, das an die Executor-Funktion übergeben wird.
interface ExecutorContext<T = any, V = any> {
operations: [string, ...any[]][];
validators?: V;
metadata: {
created_at: Date;
operation_count: number;
chain_depth: number;
};
}
Thenable-Implementierung¶
AsyncCollection implementiert die Thenable-Schnittstelle und ist daher awaitable.
then(onfulfilled?, onrejected?)¶
Implementiert Promise.then() für asynchrone Ausführung.
Rückgabe: Promise<TResult1 | TResult2>
Beispiel:
users
.where('active', true)
.then(results => console.log(results))
.catch(error => console.error(error));
// Oder mit await
const results = await users.where('active', true);
catch(onrejected?)¶
Implementiert Promise.catch() für Fehlerbehandlung.
finally(onfinally?)¶
Implementiert Promise.finally() für Bereinigung.
Filtermethoden¶
where(key, value) / where(key, operator, value)¶
Filtert Sammlung mit where-Operator und Vergleichen.
Beispiel:
whereNot(key, value) / whereNot(key, operator, value)¶
Inverser Filter - schließt übereinstimmende Elemente aus.
filter(handler)¶
Filtert Elemente mit einer Funktion oder einem Query-Objekt.
not(handler)¶
Inverser Filter - schließt übereinstimmende Elemente aus.
Suchmethoden¶
first(handler?)¶
Ruft das erste Element ab, das die Kriterien erfüllt.
last(handler?)¶
Ruft das letzte Element ab, das die Kriterien erfüllt.
find(handler)¶
Findet erstes übereinstimmendes Element (Alias für first()).
every(handler, value?)¶
Überprüft, ob alle Elemente die Kriterien erfüllen.
Transformationsmethoden¶
map(handler)¶
Transformiert jedes Element mit einer Mapping-Funktion.
each(fn)¶
Iteriert über jedes Element und führt einen Callback aus.
forget(...keys)¶
Entfernt bestimmte Felder aus jedem Element.
Sortiermethoden¶
sort(handler?, direction?)¶
Sortiert Elemente nach Schlüssel oder Vergleichsfunktion.
reverse()¶
Kehrt die Reihenfolge der Elemente um.
shuffle()¶
Mischt Elemente zufällig.
random(length?)¶
Ruft zufällige Elemente aus der Sammlung ab.
Slicing-Methoden¶
slice(start, end?)¶
Ruft einen Ausschnitt der Sammlung ab.
chunk(size)¶
Teilt Sammlung in Blöcke der angegebenen Größe.
paginate(page?, perPage?)¶
Paginiert Ergebnisse.
Aggregationsmethoden¶
sum(handler)¶
Summiert Werte eines Schlüssels oder einer Funktion.
max(key)¶
Ruft Maximalwert eines Schlüssels ab.
min(key)¶
Ruft Minimalwert eines Schlüssels ab.
groupBy(handler)¶
Gruppiert Elemente nach Schlüssel oder Funktion.
countBy(handler)¶
Zählt Elemente gruppiert nach Schlüssel oder Funktion.
Hilfsmethoden¶
unique(handler)¶
Ruft nur eindeutige Elemente nach Schlüssel oder Funktion ab.
update(where, set?)¶
Aktualisiert Elemente, die Kriterien entsprechen.
delete(where)¶
Löscht Elemente, die Kriterien entsprechen.
collect(items?)¶
Klont aktuellen Kontext mit optionalen Items.
Debugging-Methoden¶
dump()¶
Gibt Sammlung in Konsole aus zum Debugging.
dd()¶
Gibt Sammlung aus und beendet Prozess (nur Node.js).
stringify(replacer?, space?)¶
Konvertiert Sammlung in JSON-String.
Erweiterungsmethoden¶
macro(key, handler)¶
Registriert ein benutzerdefiniertes Makro (Methodenerweiterung).