Ten dokument został przetłumaczony przez AI. W przypadku niedokładności, proszę odnieść się do wersji angielskiej
Klasa zarządzająca polami kolekcji (klasa abstrakcyjna). Jest to również klasa bazowa dla wszystkich typów pól. Każdy inny typ pola jest implementowany poprzez dziedziczenie po tej klasie.
Informacje na temat dostosowywania pól znajdą Państwo w [Rozszerzanie typów pól].
Zazwyczaj nie jest wywoływany bezpośrednio przez deweloperów, lecz głównie poprzez metodę db.collection({ fields: [] }) jako punkt wejścia proxy.
Rozszerzanie pola odbywa się głównie poprzez dziedziczenie po abstrakcyjnej klasie Field, a następnie rejestrowanie jej w instancji Database.
Sygnatura
constructor(options: FieldOptions, context: FieldContext)Parametry
| Parametr | Typ | Domyślne | Opis |
|---|---|---|---|
options | FieldOptions | - | Obiekt konfiguracji pola |
options.name | string | - | Nazwa pola |
options.type | string | - | Typ pola, odpowiadający nazwie typu pola zarejestrowanego w db |
context | FieldContext | - | Obiekt kontekstu pola |
context.database | Database | - | Instancja bazy danych |
context.collection | Collection | - | Instancja kolekcji |
nameNazwa pola.
typeTyp pola.
dataTypeTyp przechowywania pola w bazie danych.
optionsParametry konfiguracji inicjalizacji pola.
contextObiekt kontekstu pola.
on()Skrócona metoda definiowania zdarzeń oparta na zdarzeniach kolekcji. Odpowiednik db.on(this.collection.name + '.' + eventName, listener).
Zazwyczaj nie ma potrzeby nadpisywania tej metody podczas dziedziczenia.
Sygnatura
on(eventName: string, listener: (...args: any[]) => void)Parametry
| Parametr | Typ | Domyślne | Opis |
|---|---|---|---|
eventName | string | - | Nazwa zdarzenia |
listener | (...args: any[]) => void | - | Obiekt nasłuchujący zdarzenia |
off()Skrócona metoda usuwania zdarzeń oparta na zdarzeniach kolekcji. Odpowiednik db.off(this.collection.name + '.' + eventName, listener).
Zazwyczaj nie ma potrzeby nadpisywania tej metody podczas dziedziczenia.
Sygnatura
off(eventName: string, listener: (...args: any[]) => void)Parametry
| Parametr | Typ | Domyślne | Opis |
|---|---|---|---|
eventName | string | - | Nazwa zdarzenia |
listener | (...args: any[]) => void | - | Obiekt nasłuchujący zdarzenia |
bind()Zawartość wykonywana, gdy pole jest dodawane do kolekcji. Zazwyczaj używana do dodawania obiektów nasłuchujących zdarzenia kolekcji i innych operacji.
Podczas dziedziczenia należy najpierw wywołać odpowiadającą metodę super.bind().
Sygnatura
bind()unbind()Zawartość wykonywana, gdy pole jest usuwane z kolekcji. Zazwyczaj używana do usuwania obiektów nasłuchujących zdarzenia kolekcji i innych operacji.
Podczas dziedziczenia należy najpierw wywołać odpowiadającą metodę super.unbind().
Sygnatura
unbind()get()Pobiera wartość elementu konfiguracji pola.
Sygnatura
get(key: string): anyParametry
| Parametr | Typ | Domyślne | Opis |
|---|---|---|---|
key | string | - | Nazwa elementu konfiguracji |
Przykład
merge()Łączy wartości elementów konfiguracji pola.
Sygnatura
merge(options: { [key: string]: any }): voidParametry
| Parametr | Typ | Domyślne | Opis |
|---|---|---|---|
options | { [key: string]: any } | - | Obiekt elementów konfiguracji do połączenia |
Przykład
remove()Usuwa pole z kolekcji (tylko z pamięci).
Przykład
removeFromDb()Usuwa pole z bazy danych.
Sygnatura
removeFromDb(options?: Transactionable): Promise<void>Parametry
| Parametr | Typ | Domyślne | Opis |
|---|---|---|---|
options.transaction? | Transaction | - | Instancja transakcji |
existsInDb()Sprawdza, czy pole istnieje w bazie danych.
Sygnatura
existsInDb(options?: Transactionable): Promise<boolean>Parametry
| Parametr | Typ | Domyślne | Opis |
|---|---|---|---|
options.transaction? | Transaction | - | Instancja transakcji |
NocoBase zawiera wbudowane, często używane typy pól. Mogą Państwo bezpośrednio używać odpowiadającej nazwy typu podczas definiowania pól dla kolekcji. Różne typy pól mają różne konfiguracje parametrów, szczegóły znajdą Państwo na poniższej liście.
Wszystkie elementy konfiguracji dla typów pól, z wyjątkiem tych dodatkowo opisanych poniżej, są przekazywane do Sequelize. Oznacza to, że wszystkie obsługiwane przez Sequelize elementy konfiguracji pól (takie jak allowNull, defaultValue itp.) mogą być tutaj używane.
Ponadto, typy pól po stronie serwera rozwiązują głównie problemy związane z przechowywaniem danych w bazie danych i niektórymi algorytmami, i są zasadniczo niezwiązane z typami wyświetlania pól i używanymi komponentami po stronie front-endu. Informacje o typach pól front-endowych znajdą Państwo w odpowiednich instrukcjach samouczka.
'boolean'Typ wartości logicznej.
Przykład
'integer'Typ liczby całkowitej (32-bitowej).
Przykład
'bigInt'Typ dużej liczby całkowitej (64-bitowej).
Przykład
'double'Typ liczby zmiennoprzecinkowej podwójnej precyzji (64-bitowej).
Przykład
'real'Typ liczby rzeczywistej (tylko dla PG).
'decimal'Typ liczby dziesiętnej.
'string'Typ ciągu znaków. Odpowiednik typu VARCHAR w większości baz danych.
Przykład
'text'Typ tekstowy. Odpowiednik typu TEXT w większości baz danych.
Przykład
'password'Typ hasła (rozszerzenie NocoBase). Szyfruje hasła w oparciu o metodę scrypt z natywnego pakietu crypto Node.js.
Przykład
Parametry
| Parametr | Typ | Domyślne | Opis |
|---|---|---|---|
length | number | 64 | Długość znaku |
randomBytesSize | number | 8 | Rozmiar losowych bajtów |
'date'Typ daty.
'time'Typ czasu.
'array'Typ tablicowy (tylko dla PG).
'json'Typ JSON.
'jsonb'Typ JSONB (tylko dla PG, inne będą kompatybilne jako typ 'json').
'uuid'Typ UUID.
'uid'Typ UID (rozszerzenie NocoBase). Krótki, losowy identyfikator ciągu znaków.
'formula'Typ formuły (rozszerzenie NocoBase). Umożliwia konfigurowanie obliczeń formuł matematycznych opartych na mathjs. Formuła może odwoływać się do wartości innych kolumn w tym samym rekordzie w celu obliczeń.
Przykład
'radio'Typ pola wyboru (rozszerzenie NocoBase). Co najwyżej jeden wiersz danych w całej kolekcji może mieć wartość tego pola ustawioną na true; wszystkie inne będą miały wartość false lub null.
Przykład
W całym systemie jest tylko jeden użytkownik oznaczony jako root. Po zmianie wartości root dowolnego innego użytkownika na true, wszystkie inne rekordy z root ustawionym na true zostaną zmienione na false:
'sort'Typ sortowania (rozszerzenie NocoBase). Sortuje na podstawie liczb całkowitych, automatycznie generuje nowy numer sekwencyjny dla nowych rekordów i zmienia kolejność numerów sekwencyjnych podczas przenoszenia danych.
Jeśli kolekcja definiuje opcję sortable, automatycznie zostanie wygenerowane również odpowiadające pole.
Przykład
Posty mogą być sortowane na podstawie użytkownika, do którego należą:
'virtual'Typ wirtualny. Nie przechowuje faktycznie danych, używany jest wyłącznie do definiowania specjalnych getterów/setterów.
'belongsTo'Typ skojarzenia wiele-do-jednego. Klucz obcy jest przechowywany w jego własnej tabeli, w przeciwieństwie do hasOne/hasMany.
Przykład
Każdy post należy do autora:
'hasOne'Typ skojarzenia jeden-do-jednego. Klucz obcy jest przechowywany w powiązanej kolekcji, w przeciwieństwie do belongsTo.
Przykład
Każdy użytkownik ma profil:
'hasMany'Typ skojarzenia jeden-do-wielu. Klucz obcy jest przechowywany w powiązanej kolekcji, w przeciwieństwie do belongsTo.
Przykład
Każdy użytkownik może mieć wiele postów:
'belongsToMany'Typ skojarzenia wiele-do-wielu. Używa kolekcji pośredniczącej do przechowywania kluczy obcych obu stron. Jeśli istniejąca kolekcja nie zostanie określona jako kolekcja pośrednicząca, zostanie ona automatycznie utworzona.
Przykład
Każdy post może mieć wiele tagów, a każdy tag może być dodany do wielu postów: