Questa documentazione è stata tradotta automaticamente dall'IA.
Questa è la classe di gestione dei campi di una collezione (classe astratta). È anche la classe base per tutti i tipi di campo; qualsiasi altro tipo di campo viene implementato ereditando da questa classe.
Per informazioni su come personalizzare i campi, può consultare [Estendere i tipi di campo].
Di solito non viene chiamato direttamente dagli sviluppatori, ma principalmente tramite il metodo db.collection({ fields: [] }) come punto di accesso proxy.
Quando si estende un campo, l'implementazione avviene principalmente ereditando la classe astratta Field e registrandola poi nell'istanza del Database.
Firma
constructor(options: FieldOptions, context: FieldContext)Parametri
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
options | FieldOptions | - | Oggetto di configurazione del campo |
options.name | string | - | Nome del campo |
options.type | string | - | Tipo di campo, corrisponde al nome del tipo di campo registrato nel db |
context | FieldContext | - | Oggetto di contesto del campo |
context.database | Database | - | Istanza del Database |
context.collection | Collection | - | Istanza della collezione |
nameNome del campo.
typeTipo di campo.
dataTypeTipo di archiviazione del campo nel database.
optionsParametri di configurazione per l'inizializzazione del campo.
contextOggetto di contesto del campo.
on()Un metodo di definizione rapida basato sugli eventi della collezione. È equivalente a db.on(this.collection.name + '.' + eventName, listener).
Di solito non è necessario sovrascrivere questo metodo durante l'ereditarietà.
Firma
on(eventName: string, listener: (...args: any[]) => void)Parametri
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
eventName | string | - | Nome dell'evento |
listener | (...args: any[]) => void | - | Listener dell'evento |
off()Un metodo di rimozione rapida basato sugli eventi della collezione. È equivalente a db.off(this.collection.name + '.' + eventName, listener).
Di solito non è necessario sovrascrivere questo metodo durante l'ereditarietà.
Firma
off(eventName: string, listener: (...args: any[]) => void)Parametri
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
eventName | string | - | Nome dell'evento |
listener | (...args: any[]) => void | - | Listener dell'evento |
bind()Contenuto eseguito quando un campo viene aggiunto a una collezione. Viene solitamente utilizzato per aggiungere listener di eventi della collezione e altre elaborazioni.
Quando si eredita, è necessario chiamare prima il metodo super.bind() corrispondente.
Firma
bind()unbind()Contenuto eseguito quando un campo viene rimosso da una collezione. Viene solitamente utilizzato per rimuovere listener di eventi della collezione e altre elaborazioni.
Quando si eredita, è necessario chiamare prima il metodo super.unbind() corrispondente.
Firma
unbind()get()Recupera il valore di un'opzione di configurazione del campo.
Firma
get(key: string): anyParametri
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
key | string | - | Nome dell'opzione di configurazione |
Esempio
merge()Unisce i valori delle opzioni di configurazione di un campo.
Firma
merge(options: { [key: string]: any }): voidParametri
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
options | { [key: string]: any } | - | L'oggetto delle opzioni di configurazione da unire |
Esempio
remove()Rimuove il campo dalla collezione (solo dalla memoria).
Esempio
removeFromDb()Rimuove il campo dal database.
Firma
removeFromDb(options?: Transactionable): Promise<void>Parametri
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
options.transaction? | Transaction | - | Istanza della transazione |
existsInDb()Determina se il campo esiste nel database.
Firma
existsInDb(options?: Transactionable): Promise<boolean>Parametri
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
options.transaction? | Transaction | - | Istanza della transazione |
NocoBase include alcuni tipi di campo di uso comune che può utilizzare direttamente specificando il nome del tipo corrispondente quando definisce i campi per una collezione. I diversi tipi di campo hanno configurazioni di parametri diverse; per i dettagli, consulti l'elenco seguente.
Tutte le opzioni di configurazione per i tipi di campo, ad eccezione di quelle introdotte di seguito, verranno passate direttamente a Sequelize. Pertanto, tutte le opzioni di configurazione di campo supportate da Sequelize possono essere utilizzate qui (come allowNull, defaultValue, ecc.).
Inoltre, i tipi di campo lato server risolvono principalmente i problemi di archiviazione del database e di alcuni algoritmi, e sono sostanzialmente indipendenti dai tipi di visualizzazione dei campi e dai componenti utilizzati nel frontend. Per i tipi di campo frontend, può fare riferimento alle istruzioni del tutorial corrispondente.
'boolean'Tipo di valore booleano.
Esempio
'integer'Tipo intero (a 32 bit).
Esempio
'bigInt'Tipo intero lungo (a 64 bit).
Esempio
'double'Tipo a virgola mobile a doppia precisione (a 64 bit).
Esempio
'real'Tipo numerico reale (applicabile solo a PG).
'decimal'Tipo numerico decimale.
'string'Tipo stringa. Equivalente al tipo VARCHAR nella maggior parte dei database.
Esempio
'text'Tipo testo. Equivalente al tipo TEXT nella maggior parte dei database.
Esempio
'password'Tipo password (estensione NocoBase). Cripta le password utilizzando il metodo scrypt del pacchetto nativo crypto di Node.js.
Esempio
Parametri
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
length | number | 64 | Lunghezza del carattere |
randomBytesSize | number | 8 | Dimensione dei byte casuali |
'date'Tipo data.
'time'Tipo ora.
'array'Tipo array (applicabile solo a PG).
'json'Tipo JSON.
'jsonb'Tipo JSONB (applicabile solo a PG; altri saranno compatibili come tipo 'json').
'uuid'Tipo UUID.
'uid'Tipo UID (estensione NocoBase). Tipo di identificatore a stringa casuale breve.
'formula'Tipo formula (estensione NocoBase). Permette di configurare calcoli con formule matematiche basate su mathjs. La formula può fare riferimento ai valori di altre colonne nella stessa riga per il calcolo.
Esempio
'radio'Tipo radio (estensione NocoBase). Al massimo una riga di dati nell'intera collezione può avere il valore di questo campo come true; tutte le altre saranno false o null.
Esempio
Nell'intero sistema c'è un solo utente contrassegnato come root. Dopo che il valore root di qualsiasi altro utente viene modificato in true, tutti gli altri record con root impostato su true verranno modificati in false:
'sort'Tipo di ordinamento (estensione NocoBase). Ordina in base a numeri interi, genera automaticamente un nuovo numero di sequenza per i nuovi record e riordina i numeri di sequenza quando i dati vengono spostati.
Se una collezione definisce l'opzione sortable, verrà generato automaticamente anche un campo corrispondente.
Esempio
I post possono essere ordinati in base all'utente a cui appartengono:
'virtual'Tipo virtuale. Non memorizza effettivamente i dati, viene utilizzato solo per definizioni speciali di getter/setter.
'belongsTo'Tipo di associazione molti-a-uno. La chiave esterna è memorizzata nella propria tabella, in contrasto con hasOne/hasMany.
Esempio
Qualsiasi post appartiene a un autore:
'hasOne'Tipo di associazione uno-a-uno. La chiave esterna è memorizzata nella collezione associata, in contrasto con belongsTo.
Esempio
Ogni utente ha un profilo:
'hasMany'Tipo di associazione uno-a-molti. La chiave esterna è memorizzata nella collezione associata, in contrasto con belongsTo.
Esempio
Qualsiasi utente può avere più post:
'belongsToMany'Tipo di associazione molti-a-molti. Utilizza una collezione intermedia per memorizzare le chiavi esterne di entrambe le parti. Se non viene specificata una collezione esistente come collezione intermedia, ne verrà creata una automaticamente.
Esempio
Qualsiasi post può avere più tag, e qualsiasi tag può essere aggiunto a più post: