Tables (Nivel 2)
import { Aside } from ‘@astrojs/starlight/components’;
Registros estructurados — tareas, leads, entradas — con un query builder. Accedé vía
sdk.table(name).
Métodos
Sección titulada «Métodos»insert(doc): Promise<T>insertMany(docs): Promise<T[]>findById(id): Promise<T | null>findOne(filter): Promise<T | null>find(filter?): Query<T> // chainableupdateById(id, changes): Promise<T | null>update(filter, changes): Promise<{ updated: number }>deleteById(id): Promise<boolean>delete(filter): Promise<{ deleted: number }>count(filter?): Promise<number>distinct(field, filter?): Promise<value[]>Query builder
Sección titulada «Query builder»find(filter).filter(f).sort(field, 'asc' | 'desc').limit(n).skip(n).select(fields).exec()Operadores de filtro: $eq $ne $gt $gte $lt $lte $in $nin
$contains $startsWith $endsWith.
Ejemplos
Sección titulada «Ejemplos»const tasks = sdk.table('tasks');
await tasks.insert({ title: 'Build', status: 'pending', priority: 1 });
const urgent = await tasks .find({ status: { $in: ['pending', 'active'] }, priority: { $lte: 2 } }) .sort('priority', 'asc') .limit(10) .exec();
const pending = await tasks.count({ status: 'pending' });const statuses = await tasks.distinct('status');Manifest
Sección titulada «Manifest»<script type="shareout/manifest">{ "version": "2.0", "sources": { "tables": { "tasks": { "schema": [ { "name": "id", "type": "string", "primary": true }, { "name": "title", "type": "string" }, { "name": "status", "type": "string" }, { "name": "priority", "type": "number" } ] } } }}</script>Rendimiento
Sección titulada «Rendimiento»- Traé los datos una sola vez en la raíz de la app; pasalos hacia abajo como props.
- Paginá los conjuntos grandes con
.limit(50). - Después de las mutaciones,
sdk.invalidateTableCache('tasks').