logologo
Start
Dokumentacja
Deweloperzy
Wtyczki
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Start
Dokumentacja
Deweloperzy
Wtyczki
API
logologo
Przegląd API

@nocobase/auth

AuthManager
Uwierzytelnianie
BaseAuth

@nocobase/cache

CacheManager
Pamięć podręczna

@nocobase/cli

NocoBase CLI
Globalne zmienne środowiskowe

@nocobase/client

Aplikacja
Wtyczka

@nocobase/database

Kolekcja
Pole

interfaces

BaseInterface
Operatory Filtrowania

RelationRepository

BelongsToManyRepository
belongs-to-repository
HasManyRepository
HasOneRepository
Repozytorium

shared

create-options
destroy-options
find-one
find-options
transaction
update-options

@nocobase/data-source-manager

DataSourceManager
Źródło danych (abstrakcyjne)
ICollectionManager
ICollection
IField
IModel
IRepository

@nocobase/flow-engine

Menedżer źródeł danych
Kontekst przepływu
FlowEngine
FlowModel
Zasób przepływu

@nocobase/logger

Rejestrator

@nocobase/server

AppCommand
Aplikacja
AuditManager
Kontekst
Migracja
Wtyczka

@nocobase/sdk

Autoryzacja
Storage
Previous Page@nocobase/database
Next PagePole
TIP

Ten dokument został przetłumaczony przez AI. W przypadku niedokładności, proszę odnieść się do wersji angielskiej

#Kolekcja

#Przegląd

Kolekcja służy do definiowania modeli danych w systemie, takich jak nazwy modeli, pola, indeksy, powiązania i inne informacje. Zazwyczaj wywołuje się ją za pośrednictwem metody collection instancji Database jako punkt wejścia proxy.

const { Database } = require('@nocobase/database')

// Tworzenie instancji bazy danych
const db = new Database({...});

// Definiowanie modelu danych
db.collection({
  name: 'users',
  // Definiowanie pól modelu
  fields: [
    // Pole skalarne
    {
      name: 'name',
      type: 'string',
    },

    // Pole powiązania
    {
      name: 'profile',
      type: 'hasOne' // 'hasMany', 'belongsTo', 'belongsToMany'
    }
  ],
});

Więcej typów pól znajdą Państwo w Pola.

#Konstruktor

Sygnatura

  • constructor(options: CollectionOptions, context: CollectionContext)

Parametry

ParametrTypWartość domyślnaOpis
options.namestring-Identyfikator kolekcji
options.tableName?string-Nazwa tabeli bazy danych. Jeśli nie zostanie podana, użyta zostanie wartość z options.name.
options.fields?FieldOptions[]-Definicje pól. Szczegóły znajdą Państwo w Pola.
options.model?string | ModelStatic<Model>-Typ modelu Sequelize. Jeśli użyto string, nazwa modelu musi być wcześniej zarejestrowana w bazie danych.
options.repository?string | RepositoryType-Typ repozytorium danych. Jeśli użyto string, typ repozytorium musi być wcześniej zarejestrowany w bazie danych.
options.sortable?string | boolean | { name?: string; scopeKey?: string }-Konfiguracja pola do sortowania danych. Domyślnie brak sortowania.
options.autoGenId?booleantrueCzy automatycznie generować unikalny klucz główny. Domyślnie true.
context.databaseDatabase-Baza danych w bieżącym kontekście.

Przykład

Tworzenie kolekcji postów:

const posts = new Collection(
  {
    name: 'posts',
    fields: [
      {
        type: 'string',
        name: 'title',
      },
      {
        type: 'double',
        name: 'price',
      },
    ],
  },
  {
    // Istniejąca instancja bazy danych
    database: db,
  },
);

#Składowe instancji

#options

Początkowe parametry konfiguracji dla kolekcji. Identyczne jak parametr options konstruktora.

#context

Kontekst, do którego należy bieżąca kolekcja, obecnie głównie instancja bazy danych.

#name

Nazwa kolekcji.

#db

Instancja bazy danych, do której należy.

#filterTargetKey

Nazwa pola używanego jako klucz główny.

#isThrough

Czy jest to kolekcja pośrednia.

#model

Odpowiada typowi modelu Sequelize.

#repository

Instancja repozytorium.

#Metody konfiguracji pól

#getField()

Pobiera obiekt pola o odpowiadającej nazwie, zdefiniowany w kolekcji.

Sygnatura

  • getField(name: string): Field

Parametry

ParametrTypWartość domyślnaOpis
namestring-Nazwa pola

Przykład

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

const field = posts.getField('title');

#setField()

Ustawia pole dla kolekcji.

Sygnatura

  • setField(name: string, options: FieldOptions): Field

Parametry

ParametrTypWartość domyślnaOpis
namestring-Nazwa pola
optionsFieldOptions-Konfiguracja pola. Szczegóły znajdą Państwo w Pola.

Przykład

const posts = db.collection({ name: 'posts' });

posts.setField('title', { type: 'string' });

#setFields()

Ustawia wiele pól dla kolekcji w trybie wsadowym.

Sygnatura

  • setFields(fields: FieldOptions[], resetFields = true): Field[]

Parametry

ParametrTypWartość domyślnaOpis
fieldsFieldOptions[]-Konfiguracja pól. Szczegóły znajdą Państwo w Pola.
resetFieldsbooleantrueCzy zresetować istniejące pola.

Przykład

const posts = db.collection({ name: 'posts' });

posts.setFields([
  { type: 'string', name: 'title' },
  { type: 'double', name: 'price' },
]);

#removeField()

Usuwa obiekt pola o odpowiadającej nazwie, zdefiniowany w kolekcji.

Sygnatura

  • removeField(name: string): void | Field

Parametry

ParametrTypWartość domyślnaOpis
namestring-Nazwa pola

Przykład

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

posts.removeField('title');

#resetFields()

Resetuje (czyści) pola kolekcji.

Sygnatura

  • resetFields(): void

Przykład

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

posts.resetFields();

#hasField()

Sprawdza, czy obiekt pola o odpowiadającej nazwie jest zdefiniowany w kolekcji.

Sygnatura

  • hasField(name: string): boolean

Parametry

ParametrTypWartość domyślnaOpis
namestring-Nazwa pola

Przykład

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

posts.hasField('title'); // true

#findField()

Znajduje w kolekcji obiekt pola spełniający określone kryteria.

Sygnatura

  • findField(predicate: (field: Field) => boolean): Field | undefined

Parametry

ParametrTypWartość domyślnaOpis
predicate(field: Field) => boolean-Kryteria wyszukiwania

Przykład

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

posts.findField((field) => field.name === 'title');

#forEachField()

Iteruje po obiektach pól w kolekcji.

Sygnatura

  • forEachField(callback: (field: Field) => void): void

Parametry

ParametrTypWartość domyślnaOpis
callback(field: Field) => void-Funkcja zwrotna

Przykład

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

posts.forEachField((field) => console.log(field.name));

#Metody konfiguracji indeksów

#addIndex()

Dodaje indeks do kolekcji.

Sygnatura

  • addIndex(index: string | string[] | { fields: string[], unique?: boolean,[key: string]: any })

Parametry

ParametrTypWartość domyślnaOpis
indexstring | string[]-Nazwa(y) pola(pól) do indeksowania.
index{ fields: string[], unique?: boolean, [key: string]: any }-Pełna konfiguracja.

Przykład

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

posts.addIndex({
  fields: ['title'],
  unique: true,
});

#removeIndex()

Usuwa indeks z kolekcji.

Sygnatura

  • removeIndex(fields: string[])

Parametry

ParametrTypWartość domyślnaOpis
fieldsstring[]-Kombinacja nazw pól dla indeksu do usunięcia.

Przykład

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
  indexes: [
    {
      fields: ['title'],
      unique: true,
    },
  ],
});

posts.removeIndex(['title']);

#Metody konfiguracji kolekcji

#remove()

Usuwa kolekcję.

Sygnatura

  • remove(): void

Przykład

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

posts.remove();

#Metody operacji na bazie danych

#sync()

Synchronizuje definicję kolekcji z bazą danych. Oprócz domyślnej logiki Model.sync w Sequelize, obsługuje również kolekcje odpowiadające polom powiązań.

Sygnatura

  • sync(): Promise<void>

Przykład

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

await posts.sync();

#existsInDb()

Sprawdza, czy kolekcja istnieje w bazie danych.

Sygnatura

  • existsInDb(options?: Transactionable): Promise<boolean>

Parametry

ParametrTypWartość domyślnaOpis
options?.transactionTransaction-Instancja transakcji

Przykład

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

const existed = await posts.existsInDb();

console.log(existed); // false

#removeFromDb()

Sygnatura

  • removeFromDb(): Promise<void>

Przykład

const books = db.collection({
  name: 'books',
});

// Synchronizuj kolekcję książek z bazą danych
await db.sync();

// Usuń kolekcję książek z bazy danych
await books.removeFromDb();