@astrojs/ db
Astro DB è un database SQL completamente gestito progettato per l’ecosistema Astro: sviluppa localmente in Astro e distribuisci dal tuo dashboard di Astro Studio.
Con Astro DB hai uno strumento potente, locale e type-safe per interrogare e modellare contenuti come un database relazionale. Visualizza, gestisci e distribuisci i tuoi dati remoti ospitati attraverso la tua dashboard interattiva di Studio.
Installazione
Sezione intitolata InstallazioneAstro include un comando astro add
per automatizzare la configurazione delle integrazioni ufficiali. Se preferisci, puoi installare le integrazioni manualmente (EN).
Esegui uno dei seguenti comandi in una nuova finestra del terminale.
Installazione Manuale
Sezione intitolata Installazione ManualeSe preferisci configurare tutto da zero da solo, salta astro add
e segui queste istruzioni per installare Astro DB manualmente.
1. Installa l’integrazione da npm tramite un gestore di pacchetti
Sezione intitolata 1. Installa l’integrazione da npm tramite un gestore di pacchetti2. Aggiungi l’integrazione a astro.config.mjs
Sezione intitolata 2. Aggiungi l’integrazione a astro.config.mjs3. Configura il tuo database
Sezione intitolata 3. Configura il tuo databaseCrea un file db/config.ts
alla radice del tuo progetto. Questo è un file speciale che Astro caricherà automaticamente e utilizzerà per configurare le tue tabelle del database.
Riferimento alla configurazione delle tabelle
Sezione intitolata Riferimento alla configurazione delle tabellecolumns
Sezione intitolata columnsLe colonne delle tabelle sono configurate utilizzando l’oggetto columns
:
Le colonne sono configurate utilizzando l’utilità column
. column
supporta i seguenti tipi:
column.text(...)
- memorizza contenuti di testo semplice o arricchitocolumn.number(...)
- memorizza valori interi e a virgola mobilecolumn.boolean(...)
- memorizza valori vero/falsocolumn.date(...)
- memorizza oggettiDate
, analizzati come stringhe ISO per l’archiviazione dei daticolumn.json(...)
- memorizza blob JSON arbitrari, analizzati come JSON stringificato per l’archiviazione dei dati
Ci sono alcuni valori di configurazione condivisi tra tutte le colonne:
primaryKey
- Imposta una colonnanumber
otext
come identificatore unico.optional
- Astro DB utilizzaNOT NULL
per tutte le colonne di default. Impostaoptional
sutrue
per consentire valori null.default
- Imposta il valore predefinito per le nuove voci inserite. Questo accetta sia un valore statico che una stringa disql
per valori generati come timestamp.unique
- Contrassegna una colonna come unica. Questo impedisce valori duplicati tra le voci nella tabella.references
- Fai riferimento a una tabella correlata per colonna. Questo stabilisce un vincolo di chiave esterna, il che significa che ogni valore della colonna deve avere un valore corrispondente nella tabella di riferimento.
indexes
Sezione intitolata indexesGli indici delle tabelle sono utilizzati per migliorare la velocità di ricerca su una data colonna o combinazione di colonne. La proprietà indexes
accetta un oggetto con un nome di indice unico come chiave:
Questo genererà un indice univoco sulle colonne authorId
e published
con il nome Comment_authorId_published_idx
.
Le seguenti opzioni di configurazione sono disponibili per ogni indice:
on
:string | string[]
- Una singola colonna o un array di nomi di colonne da indicizzare.unique
:boolean
- Imposta sutrue
per imporre valori unici attraverso le colonne indicizzate.name
:string
(opzionale) - Un nome personalizzato per l’indice univoco. Questo sostituirà il nome generato da Astro basato sulla tabella e sui nomi delle colonne indicizzate (ad esempio,Comment_authorId_published_idx
). I nomi personalizzati sono globali, quindi assicurati che i nomi degli indici non siano in conflitto tra le tabelle.
foreignKeys
Sezione intitolata foreignKeysforeignKeys
è un’API avanzata per relazionare più colonne di tabelle. Se hai bisogno di fare riferimento solo a una singola colonna, prova a utilizzare la proprietà references
della colonna.
Le chiavi esterne sono utilizzate per stabilire una relazione tra due tabelle. La proprietà foreignKeys
accetta un array di oggetti di configurazione che possono relazionare una o più colonne tra tabelle:
Ogni oggetto di configurazione della chiave esterna accetta le seguenti proprietà:
columns
:string[]
- Un array di nomi di colonne da relazionare con la tabella di riferimento.references
:() => Column[]
- Una funzione che restituisce un array di colonne dalla tabella di riferimento.
Riferimento per la CLI di Astro DB
Sezione intitolata Riferimento per la CLI di Astro DBAstro DB include un insieme di comandi CLI per interagire con il tuo database di progetto ospitato e il tuo account Astro Studio.
Questi comandi vengono chiamati automaticamente quando si utilizza un’azione CI di GitHub e possono essere chiamati manualmente utilizzando la CLI astro db
.
astro db push
Sezione intitolata astro db pushOpzioni:
--force-reset
Resetta tutti i dati di produzione se è richiesto un cambiamento dello schema di rottura.
Spingi in sicurezza le modifiche alla configurazione del database al tuo database di progetto. Questo controllerà qualsiasi rischio di perdita di dati e ti guiderà sui passaggi di migrazione raccomandati. Se deve essere effettuato un cambiamento dello schema di rottura, utilizza la flag --force-reset
per resettare tutti i dati di produzione.
astro db verify
Sezione intitolata astro db verifyControlla eventuali differenze tra le tue configurazioni del database locale e remoto. Questo viene eseguito automaticamente da astro db push
. verify
confronterà il tuo file locale db/config.ts
con il database remoto e avviserà se vengono rilevate modifiche.
astro db execute <file-path>
Sezione intitolata astro db execute <file-path>Opzioni:
--remote
Esegui contro il tuo database di progetto Studio. Ometti per eseguire contro il tuo server di sviluppo.
Esegui un file .ts
o .js
per leggere o scrivere nel tuo database. Questo accetta un percorso di file come argomento e supporta l’uso del modulo astro:db
per scrivere query type-safe. Usa la flag --remote
per eseguire contro il tuo database di progetto Studio, o ometti la flag per eseguire contro il tuo server di sviluppo. Vedi come seminare dati di sviluppo per un esempio di file.
astro db shell --query <sql-string>
Sezione intitolata astro db shell --query <sql-string>Opzioni:
--query
Query SQL grezza da eseguire.--remote
Esegui contro il tuo database di progetto Studio. Ometti per eseguire contro il tuo server di sviluppo.
Esegui una query SQL grezza contro il tuo database. Usa la flag --remote
per eseguire contro il tuo database di progetto Studio, o ometti la flag per eseguire contro il tuo server di sviluppo.
Riferimento delle utility di Astro DB
Sezione intitolata Riferimento delle utility di Astro DBisDbError()
Sezione intitolata isDbError()La funzione isDbError()
controlla se un errore è un’eccezione del database libSQL. Questo può includere un errore di vincolo di chiave esterna quando si utilizzano i riferimenti, o campi mancanti durante l’inserimento dei dati. Puoi combinare isDbError()
con un blocco try / catch per gestire gli errori del database nella tua applicazione: