logologo
Úvod
Manuál
Vývoj
Pluginy
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Úvod
Manuál
Vývoj
Pluginy
API
logologo
Přehled API

@nocobase/auth

AuthManager
Auth
BaseAuth

@nocobase/cache

CacheManager
Mezipaměť

@nocobase/cli

NocoBase CLI
Globální proměnné prostředí

@nocobase/client

Aplikace
Plugin

@nocobase/database

Kolekce
Pole

interfaces

BaseInterface
Filtrační operátory

RelationRepository

BelongsToManyRepository
belongs-to-repository
HasManyRepository
HasOneRepository
Repozitář

shared

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

@nocobase/data-source-manager

DataSourceManager
DataSource (abstraktní)
ICollectionManager
ICollection
IField
IModel
IRepository

@nocobase/flow-engine

Správce zdrojů dat
FlowContext
FlowEngine
FlowModel
Zdroj pracovního postupu

@nocobase/logger

Logger

@nocobase/server

AppCommand
Aplikace
AuditManager
Kontext
Migrace
Plugin

@nocobase/sdk

Auth
Úložiště
Previous Page@nocobase/database
Next PagePole
TIP

Tento dokument byl přeložen umělou inteligencí. V případě nepřesností se prosím obraťte na anglickou verzi

#Kolekce

#Přehled

Kolekce slouží k definování datových modelů v systému, jako jsou názvy modelů, pole, indexy, asociace a další informace. Obvykle se volá prostřednictvím metody collection instance Database jako vstupní bod proxy.

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

// Vytvořte instanci databáze
const db = new Database({...});

// Definujte datový model
db.collection({
  name: 'users',
  // Definujte pole modelu
  fields: [
    // Skalární pole
    {
      name: 'name',
      type: 'string',
    },

    // Asociační pole
    {
      name: 'profile',
      type: 'hasOne' // 'hasMany', 'belongsTo', 'belongsToMany'
    }
  ],
});

Další typy polí naleznete v Polích.

#Konstruktor

Podpis

  • constructor(options: CollectionOptions, context: CollectionContext)

Parametry

ParametrTypVýchozí hodnotaPopis
options.namestring-identifikátor kolekce
options.tableName?string-Název databázové tabulky. Pokud není zadán, použije se hodnota z options.name.
options.fields?FieldOptions[]-Definice polí. Podrobnosti naleznete v Poli.
options.model?string | ModelStatic<Model>-Typ modelu Sequelize. Pokud použijete string, název modelu musí být předtím zaregistrován v databázi.
options.repository?string | RepositoryType-Typ úložiště dat. Pokud použijete string, typ úložiště musí být předtím zaregistrován v databázi.
options.sortable?string | boolean | { name?: string; scopeKey?: string }-Konfigurace řaditelného pole dat. Ve výchozím nastavení se neřadí.
options.autoGenId?booleantrueZda se má automaticky generovat unikátní primární klíč. Výchozí hodnota je true.
context.databaseDatabase-Databáze v aktuálním kontextu.

Příklad

Vytvoření kolekce příspěvků:

const posts = new Collection(
  {
    name: 'posts',
    fields: [
      {
        type: 'string',
        name: 'title',
      },
      {
        type: 'double',
        name: 'price',
      },
    ],
  },
  {
    // Existující instance databáze
    database: db,
  },
);

#Členové instance

#options

Počáteční konfigurační parametry pro kolekci. Stejné jako parametr options konstruktoru.

#context

Kontext, do kterého aktuální kolekce patří, v současné době se jedná hlavně o instanci databáze.

#name

Název kolekce.

#db

Instance databáze, do které patří.

#filterTargetKey

Název pole použitého jako primární klíč.

#isThrough

Zda se jedná o průchozí kolekci.

#model

Odpovídá typu modelu Sequelize.

#repository

Instance úložiště dat.

#Metody konfigurace polí

#getField()

Získá objekt pole s odpovídajícím názvem definovaným v kolekci.

Podpis

  • getField(name: string): Field

Parametry

ParametrTypVýchozí hodnotaPopis
namestring-Název pole

Příklad

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

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

#setField()

Nastaví pole pro kolekci.

Podpis

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

Parametry

ParametrTypVýchozí hodnotaPopis
namestring-Název pole
optionsFieldOptions-Konfigurace pole. Podrobnosti naleznete v Poli.

Příklad

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

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

#setFields()

Hromadně nastaví více polí pro kolekci.

Podpis

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

Parametry

ParametrTypVýchozí hodnotaPopis
fieldsFieldOptions[]-Konfigurace polí. Podrobnosti naleznete v Poli.
resetFieldsbooleantrueZda resetovat existující pole.

Příklad

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

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

#removeField()

Odebere objekt pole s odpovídajícím názvem definovaným v kolekci.

Podpis

  • removeField(name: string): void | Field

Parametry

ParametrTypVýchozí hodnotaPopis
namestring-Název pole

Příklad

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

posts.removeField('title');

#resetFields()

Resetuje (vymaže) pole kolekce.

Podpis

  • resetFields(): void

Příklad

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

posts.resetFields();

#hasField()

Zkontroluje, zda je v kolekci definován objekt pole s odpovídajícím názvem.

Podpis

  • hasField(name: string): boolean

Parametry

ParametrTypVýchozí hodnotaPopis
namestring-Název pole

Příklad

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

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

#findField()

Najde v kolekci objekt pole, který splňuje kritéria.

Podpis

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

Parametry

ParametrTypVýchozí hodnotaPopis
predicate(field: Field) => boolean-Kritéria vyhledávání

Příklad

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

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

#forEachField()

Iteruje přes objekty polí v kolekci.

Podpis

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

Parametry

ParametrTypVýchozí hodnotaPopis
callback(field: Field) => void-Funkce zpětného volání

Příklad

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

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

#Metody konfigurace indexů

#addIndex()

Přidá index do kolekce.

Podpis

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

Parametry

ParametrTypVýchozí hodnotaPopis
indexstring | string[]-Název(názvy) pole(polí) pro indexování.
index{ fields: string[], unique?: boolean, [key: string]: any }-Kompletní konfigurace.

Příklad

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

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

#removeIndex()

Odebere index z kolekce.

Podpis

  • removeIndex(fields: string[])

Parametry

ParametrTypVýchozí hodnotaPopis
fieldsstring[]-Kombinace názvů polí pro index, který má být odstraněn.

Příklad

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

posts.removeIndex(['title']);

#Metody konfigurace kolekce

#remove()

Odstraní kolekci.

Podpis

  • remove(): void

Příklad

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

posts.remove();

#Metody databázových operací

#sync()

Synchronizuje definici kolekce s databází. Kromě výchozí logiky Model.sync v Sequelize zpracovává také kolekce odpovídající asociačním polím.

Podpis

  • sync(): Promise<void>

Příklad

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

await posts.sync();

#existsInDb()

Zkontroluje, zda kolekce existuje v databázi.

Podpis

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

Parametry

ParametrTypVýchozí hodnotaPopis
options?.transactionTransaction-Instance transakce

Příklad

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

const existed = await posts.existsInDb();

console.log(existed); // false

#removeFromDb()

Podpis

  • removeFromDb(): Promise<void>

Příklad

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

// Synchronizujte kolekci knih s databází
await db.sync();

// Odstraňte kolekci knih z databáze
await books.removeFromDb();