logologo
Começar
Manual
Desenvolvimento
Plugins
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Começar
Manual
Desenvolvimento
Plugins
API
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();