Vai al contenuto principale

Opzioni del Data Source

Traduzione Beta Non Ufficiale

Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →

Cos'è DataSourceOptions?

DataSourceOptions è la configurazione del data source passata durante la creazione di una nuova istanza DataSource. Diversi RDBMS hanno opzioni specifiche proprie.

Opzioni comuni del data source

  • type - Tipo di RDBMS. È necessario specificare quale motore di database si utilizza. Valori possibili: "mysql", "postgres", "cockroachdb", "sap", "spanner", "mariadb", "sqlite", "cordova", "react-native", "nativescript", "sqljs", "oracle", "mssql", "mongodb", "aurora-mysql", "aurora-postgres", "expo", "better-sqlite3", "capacitor". Questa opzione è obbligatoria.

  • extra - Opzioni extra da passare al driver sottostante. Usala se vuoi passare impostazioni aggiuntive al driver del database sottostante.

  • entities - Entità o Entity Schema da caricare e utilizzare per questa sorgente dati. Accetta classi di entità, classi di schema di entità e percorsi di directory da cui caricare. Le directory supportano pattern glob. Esempio: entities: [Post, Category, "entities/*.js", "modules/**/entities/*.js"]. Scopri di più sulle Entità. Scopri di più sugli Entity Schemas.

  • subscribers - Subscriber da caricare e utilizzare per questa sorgente dati. Accetta sia classi di entità che directory da cui caricare. Le directory supportano pattern glob. Esempio: subscribers: [PostSubscriber, AppSubscriber, "subscribers/*.js", "modules/**/subscribers/*.js"]. Scopri di più sui Subscriber.

  • logging - Indica se il logging è abilitato. Se impostato a true, vengono abilitati il logging delle query e degli errori. Puoi anche specificare diversi tipi di logging da abilitare, ad esempio ["query", "error", "schema"]. Scopri di più sul Logging.

  • logger - Logger da utilizzare per il logging. Valori possibili: "advanced-console", "formatted-console", "simple-console" e "file". Il valore predefinito è "advanced-console". Puoi anche specificare una classe logger che implementi l'interfaccia Logger. Scopri di più sul Logging.

  • maxQueryExecutionTime - Se il tempo di esecuzione di una query supera questo tempo massimo (in millisecondi), il logger registrerà la query.

  • poolSize - Configura il numero massimo di connessioni attive nel pool.

  • namingStrategy - Strategia di denominazione da utilizzare per nominare tabelle e colonne nel database.

  • entityPrefix - Aggiunge il prefisso specificato a tutte le tabelle (o collezioni) di questa sorgente dati.

  • entitySkipConstructor - Indica se TypeORM deve saltare i costruttori durante la deserializzazione delle entità dal database. Nota che quando non viene chiamato il costruttore, sia le proprietà private che quelle predefinite non funzioneranno come previsto.

  • dropSchema - Elimina lo schema ogni volta che la sorgente dati viene inizializzata. Fai attenzione con questa opzione e non usarla in produzione - altrimenti perderai tutti i dati di produzione. Questa opzione è utile durante il debug e lo sviluppo.

  • synchronize - Indica se lo schema del database deve essere creato automaticamente ad ogni avvio dell'applicazione. Fai attenzione con questa opzione e non usarla in produzione - altrimenti potresti perdere i dati di produzione. Questa opzione è utile durante il debug e lo sviluppo. In alternativa, puoi usare la CLI ed eseguire il comando schema:sync. Nota che per i database MongoDB non crea uno schema, perché MongoDB è schemaless. Invece, esegue la sincronizzazione solo creando gli indici.

  • migrations - Migration da caricare e utilizzare per questa sorgente dati

  • migrationsRun - Indica se le migration devono essere eseguite automaticamente ad ogni avvio dell'applicazione.

  • migrationsTableName - Nome della tabella nel database che conterrà le informazioni sulle migration eseguite.

  • migrationsTransactionMode - Controlla la modalità di transazione durante l'esecuzione delle migrations.

  • metadataTableName - Nome della tabella nel database che conterrà i metadati delle tabelle. Di default, questa tabella è chiamata "typeorm_metadata".

  • cache - Abilita la cache dei risultati delle entità. Puoi anche configurare qui il tipo di cache e altre opzioni. Leggi di più sulla cache qui.

  • isolateWhereStatements - Abilita l'isolamento delle clausole WHERE, racchiudendo automaticamente ogni condizione tra parentesi. Esempio: .where("user.firstName = :search OR user.lastName = :search") diventa WHERE (user.firstName = ? OR user.lastName = ?) invece di WHERE user.firstName = ? OR user.lastName = ?.

  • invalidWhereValuesBehavior - Controlla come i valori null e undefined vengono gestiti nelle condizioni WHERE in tutte le operazioni di TypeORM (operazioni find, query builder, metodi del repository).

    • Opzioni per null:
      • 'ignore' (default) - ignora le proprietà null
      • 'sql-null' - trasforma null in SQL NULL
      • 'throw' - genera un errore
    • Opzioni per undefined:
      • 'ignore' (default) - ignora le proprietà undefined
      • 'throw' - genera un errore

    Esempio: invalidWhereValuesBehavior: { null: 'sql-null', undefined: 'throw' }.

    Approfondisci la Gestione di Null e Undefined.

Esempio di opzioni di Data Source

Ecco un piccolo esempio di opzioni per una sorgente dati mysql:

{
host: "localhost",
port: 3306,
username: "test",
password: "test",
database: "test",
logging: true,
synchronize: true,
entities: [__dirname + "/entities/**/*{.js,.ts}"],
subscribers: [__dirname + "/subscribers/**/*{.js,.ts}"],
entitySchemas: [__dirname + "/schemas/**/*.json"],
migrations: [__dirname + "/migrations/**/*{.js,.ts}"]
}