logologo
Empezar
Manual
Desarrollo
Plugins
API
Inicio
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Empezar
Manual
Desarrollo
Plugins
API
Inicio
logologo
API Overview

@nocobase/auth

AuthManager
Auth
BaseAuth

@nocobase/cache

CacheManager
Caché

@nocobase/cli

CLI de NocoBase
Variables de Entorno Globales

@nocobase/client

Aplicación
Plugin

@nocobase/database

Colección
Campo

interfaces

BaseInterface
Operadores de Filtro

RelationRepository

BelongsToManyRepository
belongs-to-repository
HasManyRepository
HasOneRepository
Repositorio

shared

create-options
destroy-options
find-one
Estado vacío
transaction
update-options

@nocobase/data-source-manager

DataSourceManager
DataSource (abstracta)
ICollectionManager
ICollection
IField
IModel
IRepository

@nocobase/flow-engine

Gestor de Fuentes de Datos
Contexto del Flujo
FlowEngine
FlowModel
Recurso de Flujo de Trabajo

@nocobase/logger

Logger

@nocobase/server

AppCommand
Aplicación
AuditManager
Contexto
Migración
Plugin

@nocobase/sdk

Auth
Storage
Previous Page@nocobase/database
Next PageCampo
Aviso de traducción por IA

Esta documentación ha sido traducida automáticamente por IA.

#Colección

#Resumen

La colección se utiliza para definir modelos de datos en el sistema, como nombres de modelos, campos, índices, asociaciones y otra información. Generalmente, se invoca a través del método collection de una instancia de Database como punto de entrada de proxy.

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

// Crear una instancia de base de datos
const db = new Database({...});

// Definir un modelo de datos
db.collection({
  name: 'users',
  // Definir campos del modelo
  fields: [
    // Campo escalar
    {
      name: 'name',
      type: 'string',
    },

    // Campo de asociación
    {
      name: 'profile',
      type: 'hasOne' // 'hasMany', 'belongsTo', 'belongsToMany'
    }
  ],
});

Para más tipos de campos, consulte Campos.

#Constructor

Firma

  • constructor(options: CollectionOptions, context: CollectionContext)

Parámetros

ParámetroTipoValor predeterminadoDescripción
options.namestring-Identificador de la colección
options.tableName?string-Nombre de la tabla de la base de datos. Si no se proporciona, se utilizará el valor de options.name.
options.fields?FieldOptions[]-Definiciones de campos. Consulte Campo para más detalles.
options.model?string | ModelStatic<Model>-Tipo de modelo de Sequelize. Si se utiliza una string, el nombre del modelo debe haberse registrado previamente en la base de datos.
options.repository?string | RepositoryType-Tipo de repositorio. Si se utiliza una string, el tipo de repositorio debe haberse registrado previamente en la base de datos.
options.sortable?string | boolean | { name?: string; scopeKey?: string }-Configuración del campo ordenable. Por defecto, no es ordenable.
options.autoGenId?booleantrueIndica si se debe generar automáticamente una clave primaria única. El valor predeterminado es true.
context.databaseDatabase-La base de datos en el contexto actual.

Ejemplo

Crear una colección de publicaciones:

const posts = new Collection(
  {
    name: 'posts',
    fields: [
      {
        type: 'string',
        name: 'title',
      },
      {
        type: 'double',
        name: 'price',
      },
    ],
  },
  {
    // Instancia de base de datos existente
    database: db,
  },
);

#Miembros de Instancia

#options

Parámetros de configuración inicial de la colección. Son los mismos que el parámetro options del constructor.

#context

El contexto al que pertenece la colección actual, que actualmente es principalmente la instancia de la base de datos.

#name

Nombre de la colección.

#db

La instancia de base de datos a la que pertenece.

#filterTargetKey

El nombre del campo utilizado como clave primaria.

#isThrough

Indica si es una colección intermedia.

#model

Coincide con el tipo de modelo de Sequelize.

#repository

Instancia del repositorio.

#Métodos de Configuración de Campos

#getField()

Obtiene el objeto de campo con el nombre correspondiente definido en la colección.

Firma

  • getField(name: string): Field

Parámetros

ParámetroTipoValor predeterminadoDescripción
namestring-Nombre del campo

Ejemplo

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

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

#setField()

Establece un campo para la colección.

Firma

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

Parámetros

ParámetroTipoValor predeterminadoDescripción
namestring-Nombre del campo
optionsFieldOptions-Configuración del campo. Consulte Campo para más detalles.

Ejemplo

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

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

#setFields()

Establece múltiples campos para la colección en lote.

Firma

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

Parámetros

ParámetroTipoValor predeterminadoDescripción
fieldsFieldOptions[]-Configuración del campo. Consulte Campo para más detalles.
resetFieldsbooleantrueIndica si se deben restablecer los campos existentes.

Ejemplo

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

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

#removeField()

Elimina el objeto de campo con el nombre correspondiente definido en la colección.

Firma

  • removeField(name: string): void | Field

Parámetros

ParámetroTipoValor predeterminadoDescripción
namestring-Nombre del campo

Ejemplo

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

posts.removeField('title');

#resetFields()

Restablece (borra) los campos de la colección.

Firma

  • resetFields(): void

Ejemplo

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

posts.resetFields();

#hasField()

Comprueba si un objeto de campo con el nombre correspondiente está definido en la colección.

Firma

  • hasField(name: string): boolean

Parámetros

ParámetroTipoValor predeterminadoDescripción
namestring-Nombre del campo

Ejemplo

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

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

#findField()

Encuentra un objeto de campo en la colección que cumple con los criterios.

Firma

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

Parámetros

ParámetroTipoValor predeterminadoDescripción
predicate(field: Field) => boolean-Criterios de búsqueda

Ejemplo

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

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

#forEachField()

Itera sobre los objetos de campo en la colección.

Firma

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

Parámetros

ParámetroTipoValor predeterminadoDescripción
callback(field: Field) => void-Función de callback

Ejemplo

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

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

#Métodos de Configuración de Índices

#addIndex()

Añade un índice a la colección.

Firma

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

Parámetros

ParámetroTipoValor predeterminadoDescripción
indexstring | string[]-Nombre(s) del campo a indexar.
index{ fields: string[], unique?: boolean, [key: string]: any }-Configuración completa.

Ejemplo

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

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

#removeIndex()

Elimina un índice de la colección.

Firma

  • removeIndex(fields: string[])

Parámetros

ParámetroTipoValor predeterminadoDescripción
fieldsstring[]-Combinación de nombres de campos para el índice a eliminar.

Ejemplo

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

posts.removeIndex(['title']);

#Métodos de Configuración de la Colección

#remove()

Elimina la colección.

Firma

  • remove(): void

Ejemplo

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

posts.remove();

#Métodos de Operación de Base de Datos

#sync()

Sincroniza la definición de la colección con la base de datos. Además de la lógica predeterminada de Model.sync en Sequelize, también procesa las colecciones correspondientes a los campos de asociación.

Firma

  • sync(): Promise<void>

Ejemplo

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

await posts.sync();

#existsInDb()

Comprueba si la colección existe en la base de datos.

Firma

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

Parámetros

ParámetroTipoValor predeterminadoDescripción
options?.transactionTransaction-Instancia de transacción

Ejemplo

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>

Ejemplo

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

// Sincronizar la colección de libros con la base de datos
await db.sync();

// Eliminar la colección de libros de la base de datos
await books.removeFromDb();