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

@nocobase/auth

AuthManager
Auth
BaseAuth

@nocobase/cache

CacheManager
Cache

@nocobase/cli

NocoBase CLI
Variabili d'ambiente globali

@nocobase/client

Applicazione
Plugin

@nocobase/database

Collezione
Campo

interfaces

BaseInterface
Operatori di Filtro

RelationRepository

BelongsToManyRepository
belongs-to-repository
HasManyRepository
HasOneRepository
Repository

shared

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

@nocobase/data-source-manager

DataSourceManager
DataSource (classe astratta)
ICollectionManager
ICollection
IField
IModel
IRepository

@nocobase/flow-engine

DataSourceManager
FlowContext
FlowEngine
FlowModel
Risorsa Flusso

@nocobase/logger

Logger

@nocobase/server

AppCommand
Applicazione
AuditManager
Contesto
Migrazione
Plugin

@nocobase/sdk

Auth
Storage
Previous Page@nocobase/database
Next PageCampo
Avviso di traduzione IA

Questa documentazione è stata tradotta automaticamente dall'IA.

#Collezione

#Panoramica

Una collezione serve a definire i modelli di dati all'interno del sistema, includendo informazioni come il nome del modello, i campi, gli indici e le associazioni. Solitamente, viene richiamata tramite il metodo collection di un'istanza Database, che funge da punto di accesso.

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

// Crea un'istanza del database
const db = new Database({...});

// Definisce un modello di dati
db.collection({
  name: 'users',
  // Definisce i campi del modello
  fields: [
    // Campo scalare
    {
      name: 'name',
      type: 'string',
    },

    // Campo di associazione
    {
      name: 'profile',
      type: 'hasOne' // 'hasMany', 'belongsTo', 'belongsToMany'
    }
  ],
});

Per ulteriori tipi di campo, consulti Campi.

#Costruttore

Firma

  • constructor(options: CollectionOptions, context: CollectionContext)

Parametri

ParametroTipoPredefinitoDescrizione
options.namestring-Identificatore della collezione
options.tableName?string-Nome della tabella del database. Se non fornito, verrà utilizzato il valore di options.name.
options.fields?FieldOptions[]-Definizioni dei campi. Per i dettagli, veda Campo.
options.model?string | ModelStatic<Model>-Tipo di modello Sequelize. Se si utilizza una stringa, il nome del modello deve essere stato precedentemente registrato nel database.
options.repository?string | RepositoryType-Tipo di repository. Se si utilizza una stringa, il tipo di repository deve essere stato precedentemente registrato nel database.
options.sortable?string | boolean | { name?: string; scopeKey?: string }-Configurazione del campo ordinabile. Non ordinabile per impostazione predefinita.
options.autoGenId?booleantrueIndica se generare automaticamente una chiave primaria univoca. Il valore predefinito è true.
context.databaseDatabase-Il database nel contesto attuale.

Esempio

Creare una collezione di articoli:

const posts = new Collection(
  {
    name: 'posts',
    fields: [
      {
        type: 'string',
        name: 'title',
      },
      {
        type: 'double',
        name: 'price',
      },
    ],
  },
  {
    // Istanza di database esistente
    database: db,
  },
);

#Membri dell'istanza

#options

Parametri di configurazione iniziali per la collezione. Sono gli stessi del parametro options del costruttore.

#context

Il contesto a cui appartiene la collezione attuale, che al momento è principalmente l'istanza del database.

#name

Nome della collezione.

#db

L'istanza del database a cui appartiene.

#filterTargetKey

Il nome del campo utilizzato come chiave primaria.

#isThrough

Indica se si tratta di una collezione intermedia.

#model

Corrisponde al tipo di modello Sequelize.

#repository

Istanza del repository.

#Metodi di configurazione dei campi

#getField()

Recupera l'oggetto campo con il nome corrispondente definito nella collezione.

Firma

  • getField(name: string): Field

Parametri

ParametroTipoPredefinitoDescrizione
namestring-Nome del campo

Esempio

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

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

#setField()

Imposta un campo per la collezione.

Firma

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

Parametri

ParametroTipoPredefinitoDescrizione
namestring-Nome del campo
optionsFieldOptions-Configurazione del campo. Per i dettagli, veda Campo.

Esempio

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

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

#setFields()

Imposta più campi per la collezione in blocco.

Firma

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

Parametri

ParametroTipoPredefinitoDescrizione
fieldsFieldOptions[]-Configurazione dei campi. Per i dettagli, veda Campo.
resetFieldsbooleantrueIndica se reimpostare i campi esistenti.

Esempio

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

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

#removeField()

Rimuove l'oggetto campo con il nome corrispondente definito nella collezione.

Firma

  • removeField(name: string): void | Field

Parametri

ParametroTipoPredefinitoDescrizione
namestring-Nome del campo

Esempio

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

posts.removeField('title');

#resetFields()

Reimposta (cancella) i campi della collezione.

Firma

  • resetFields(): void

Esempio

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

posts.resetFields();

#hasField()

Verifica se un oggetto campo con il nome corrispondente è definito nella collezione.

Firma

  • hasField(name: string): boolean

Parametri

ParametroTipoPredefinitoDescrizione
namestring-Nome del campo

Esempio

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

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

#findField()

Trova un oggetto campo nella collezione che soddisfa i criteri.

Firma

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

Parametri

ParametroTipoPredefinitoDescrizione
predicate(field: Field) => boolean-Criteri di ricerca

Esempio

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

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

#forEachField()

Itera sugli oggetti campo nella collezione.

Firma

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

Parametri

ParametroTipoPredefinitoDescrizione
callback(field: Field) => void-Funzione di callback

Esempio

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

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

#Metodi di configurazione degli indici

#addIndex()

Aggiunge un indice alla collezione.

Firma

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

Parametri

ParametroTipoPredefinitoDescrizione
indexstring | string[]-Nome/i del campo/i da indicizzare.
index{ fields: string[], unique?: boolean, [key: string]: any }-Configurazione completa.

Esempio

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

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

#removeIndex()

Rimuove un indice dalla collezione.

Firma

  • removeIndex(fields: string[])

Parametri

ParametroTipoPredefinitoDescrizione
fieldsstring[]-Combinazione di nomi di campo per l'indice da rimuovere.

Esempio

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

posts.removeIndex(['title']);

#Metodi di configurazione della collezione

#remove()

Elimina la collezione.

Firma

  • remove(): void

Esempio

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

posts.remove();

#Metodi di operazione sul database

#sync()

Sincronizza la definizione della collezione con il database. Oltre alla logica predefinita di Model.sync in Sequelize, gestisce anche le collezioni corrispondenti ai campi di associazione.

Firma

  • sync(): Promise<void>

Esempio

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

await posts.sync();

#existsInDb()

Verifica se la collezione esiste nel database.

Firma

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

Parametri

ParametroTipoPredefinitoDescrizione
options?.transactionTransaction-Istanza della transazione

Esempio

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

const existed = await posts.existsInDb();

console.log(existed); // false

#removeFromDb()

Firma

  • removeFromDb(): Promise<void>

Esempio

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

// Sincronizza la collezione di libri con il database
await db.sync();

// Rimuove la collezione di libri dal database
await books.removeFromDb();