logologo
Começar
Manual
Desenvolvimento
Plugins
API
Início
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Começar
Manual
Desenvolvimento
Plugins
API
Início
logologo
Visão Geral da API

@nocobase/auth

AuthManager
Autenticação
BaseAuth

@nocobase/cache

CacheManager
Cache

@nocobase/cli

NocoBase CLI
Variáveis de Ambiente Globais

@nocobase/client

Aplicação
Plugin

@nocobase/database

Coleção
Campo

interfaces

BaseInterface
Operadores de Filtro

RelationRepository

BelongsToManyRepository
belongs-to-repository
HasManyRepository
HasOneRepository
Repositório

shared

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

@nocobase/data-source-manager

DataSourceManager
DataSource (abstrata)
ICollectionManager
ICollection
IField
IModel
IRepository

@nocobase/flow-engine

Gerenciador de Fonte de Dados
Contexto do Fluxo
FlowEngine
FlowModel
Recurso de Fluxo

@nocobase/logger

Logger

@nocobase/server

AppCommand
Aplicação
AuditManager
Contexto
Migração
Plugin

@nocobase/sdk

Auth
Storage
Previous Page@nocobase/database
Next PageCampo
Aviso de tradução por IA

Esta documentação foi traduzida automaticamente por IA.

#Coleção

#Visão Geral

A coleção é usada para definir modelos de dados no sistema, como nomes de modelos, campos, índices, associações e outras informações. Geralmente, ela é chamada através do método collection de uma instância de Database como um ponto de entrada proxy.

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

// Cria uma instância de banco de dados
const db = new Database({...});

// Define um modelo de dados
db.collection({
  name: 'users',
  // Define os campos do modelo
  fields: [
    // Campo escalar
    {
      name: 'name',
      type: 'string',
    },

    // Campo de associação
    {
      name: 'profile',
      type: 'hasOne' // 'hasMany', 'belongsTo', 'belongsToMany'
    }
  ],
});

Para mais tipos de campos, consulte Campos.

#Construtor

Assinatura

  • constructor(options: CollectionOptions, context: CollectionContext)

Parâmetros

ParâmetroTipoPadrãoDescrição
options.namestring-Identificador da coleção
options.tableName?string-Nome da tabela no banco de dados. Se não for fornecido, o valor de options.name será usado.
options.fields?FieldOptions[]-Definições de campo. Veja Campo para mais detalhes.
options.model?string | ModelStatic<Model>-Tipo de Model do Sequelize. Se uma string for usada, o nome do modelo deve ter sido registrado previamente no db.
options.repository?string | RepositoryType-Tipo de repositório. Se uma string for usada, o tipo de repositório deve ter sido registrado previamente no db.
options.sortable?string | boolean | { name?: string; scopeKey?: string }-Configuração de campo ordenável. Não é ordenável por padrão.
options.autoGenId?booleantrueSe deve gerar automaticamente uma chave primária única. O padrão é true.
context.databaseDatabase-O banco de dados no contexto atual.

Exemplo

Crie uma coleção de posts:

const posts = new Collection(
  {
    name: 'posts',
    fields: [
      {
        type: 'string',
        name: 'title',
      },
      {
        type: 'double',
        name: 'price',
      },
    ],
  },
  {
    // Instância de banco de dados existente
    database: db,
  },
);

#Membros da Instância

#options

Parâmetros de configuração inicial para a coleção. Idêntico ao parâmetro options do construtor.

#context

O contexto ao qual a coleção atual pertence, atualmente sendo principalmente a instância do banco de dados.

#name

Nome da coleção.

#db

A instância do banco de dados à qual pertence.

#filterTargetKey

O nome do campo usado como chave primária.

#isThrough

Se é uma coleção intermediária.

#model

Corresponde ao tipo de Model do Sequelize.

#repository

Instância do repositório.

#Métodos de Configuração de Campo

#getField()

Obtém o objeto de campo com o nome correspondente definido na coleção.

Assinatura

  • getField(name: string): Field

Parâmetros

ParâmetroTipoPadrãoDescrição
namestring-Nome do campo

Exemplo

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

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

#setField()

Define um campo para a coleção.

Assinatura

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

Parâmetros

ParâmetroTipoPadrãoDescrição
namestring-Nome do campo
optionsFieldOptions-Configuração do campo. Veja Campo para mais detalhes.

Exemplo

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

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

#setFields()

Define múltiplos campos para a coleção em lote.

Assinatura

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

Parâmetros

ParâmetroTipoPadrãoDescrição
fieldsFieldOptions[]-Configuração do campo. Veja Campo para mais detalhes.
resetFieldsbooleantrueSe deve redefinir os campos existentes.

Exemplo

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

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

#removeField()

Remove o objeto de campo com o nome correspondente definido na coleção.

Assinatura

  • removeField(name: string): void | Field

Parâmetros

ParâmetroTipoPadrãoDescrição
namestring-Nome do campo

Exemplo

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

posts.removeField('title');

#resetFields()

Redefine (limpa) os campos da coleção.

Assinatura

  • resetFields(): void

Exemplo

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

posts.resetFields();

#hasField()

Verifica se um objeto de campo com o nome correspondente está definido na coleção.

Assinatura

  • hasField(name: string): boolean

Parâmetros

ParâmetroTipoPadrãoDescrição
namestring-Nome do campo

Exemplo

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

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

#findField()

Encontra um objeto de campo na coleção que atende aos critérios.

Assinatura

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

Parâmetros

ParâmetroTipoPadrãoDescrição
predicate(field: Field) => boolean-Critério de busca

Exemplo

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

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

#forEachField()

Itera sobre os objetos de campo na coleção.

Assinatura

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

Parâmetros

ParâmetroTipoPadrãoDescrição
callback(field: Field) => void-Função de callback

Exemplo

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

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

#Métodos de Configuração de Índice

#addIndex()

Adiciona um índice à coleção.

Assinatura

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

Parâmetros

ParâmetroTipoPadrãoDescrição
indexstring | string[]-Nome(s) do(s) campo(s) a ser(em) indexado(s).
index{ fields: string[], unique?: boolean, [key: string]: any }-Configuração completa.

Exemplo

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

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

#removeIndex()

Remove um índice da coleção.

Assinatura

  • removeIndex(fields: string[])

Parâmetros

ParâmetroTipoPadrãoDescrição
fieldsstring[]-Combinação de nomes de campos para o índice a ser removido.

Exemplo

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

posts.removeIndex(['title']);

#Métodos de Configuração da Coleção

#remove()

Exclui a coleção.

Assinatura

  • remove(): void

Exemplo

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

posts.remove();

#Métodos de Operação de Banco de Dados

#sync()

Sincroniza a definição da coleção com o banco de dados. Além da lógica padrão de Model.sync no Sequelize, ele também processa as coleções correspondentes aos campos de associação.

Assinatura

  • sync(): Promise<void>

Exemplo

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

await posts.sync();

#existsInDb()

Verifica se a coleção existe no banco de dados.

Assinatura

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

Parâmetros

ParâmetroTipoPadrãoDescrição
options?.transactionTransaction-Instância de transação

Exemplo

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

const existed = await posts.existsInDb();

console.log(existed); // false

#removeFromDb()

Assinatura

  • removeFromDb(): Promise<void>

Exemplo

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

// Sincroniza a coleção de livros com o banco de dados
await db.sync();

// Remove a coleção de livros do banco de dados
await books.removeFromDb();