Salta ai contenuti

Xata & Astro

Xata è una Piattaforma dati serverless che combina le funzionalità di un database relazionale, un motore di ricerca e un motore di analisi, e li rende utilizzabili attraverso una singola REST API.

  • Un account Xata con un database. (Puoi utilizzare il database di esempio dall’interfaccia utente.)
  • Un Token di Accesso (XATA_TOKEN_API).
  • L’URL del tuo Database.

Dopo aver aggiornato e inizializzato la Xata CLI, avrai il tuo token per l’API nel file .env e l’URL del database.

Alla fine della configurazione, dovresti avere:

.env
XATA_API_KEY=hash_key
# Branch Xata che verrà utilizzato
# se non esiste un branch xata con
# lo stesso nome del tuo branch git
XATA_BRANCH=main

E l’URL del database:

.xatarc
{
"databaseUrl": "https://il-tuo-url-del-database"
}

Per avere IntelliSense e dei tipi per le tue variabili d’ambiente, modifica o crea il file env.d.ts nella tua cartella src/:

src/env.d.ts
interface ImportMetaEnv {
readonly XATA_API_KEY: string;
readonly XATA_BRANCH?: string;
}
interface ImportMeta {
readonly env: ImportMetaEnv;
}

Utilizzando la Xata CLI per generare il codice di base e scegliendo l’opzione TypeScript, sarà generata un’istanza del SDK per te, con i tipi adattati allo schema del tuo database. Inoltre, @xata.io/client sarà aggiunto al tuo package.json.

Le tue variabili d’ambiente Xata e l’URL del database sono stati automaticamente acquisiti dall’istanza del SDK, quindi non è necessario alcun altro lavoro di configurazione.

Ora, il tuo progetto dovrebbe avere la seguente struttura:

  • Directorysrc/
    • xata.ts
    • env.d.ts
  • .env
  • astro.config.mjs
  • package.json
  • .xatarc

Per ottenere i tuoi post, importa e utilizza getXataClient() in un file .astro. L’esempio seguente prende i primi 50 post dal Sample Blog Database di Xata.

src/pages/blog/index.astro
---
import { XataClient } from '../../xata';
const xata = new XataClient({
apiKey: import.meta.env.XATA_API_KEY,
branch: import.meta.env.XATA_BRANCH
});
const { records } = await xata.db.Posts.getPaginated({
pagination: {
size: 50
}
})
---
<ul>
{records.map((post) => (
<li>{post.title}</li>
))}
</ul>

È importante notare che l’SDK deve essere rigenerato ogni volta che lo schema viene modificato. Pertanto, evita di apportare modifiche ai file generati/dalla Xata CLI, perché una volta che lo schema viene aggiornato, le tue modifiche saranno sovrascritte.

Altre guide per servizi backend