Parâmetros de Configuração da Coleção
name - Nome da Coleção
- Tipo:
string - Obrigatório: ✅
- Descrição: O identificador único para a coleção, que deve ser exclusivo em todo o aplicativo.
- Exemplo:
title - Título da Coleção
- Tipo:
string - Obrigatório: ❌
- Descrição: O título de exibição da coleção, usado para a interface do frontend.
- Exemplo:
migrationRules - Regras de Migração
- Tipo:
MigrationRule[] - Obrigatório: ❌
- Descrição: Regras de processamento para a migração de dados.
- Exemplo:
inherits - Herdar Coleções
- Tipo:
string[] | string - Obrigatório: ❌
- Descrição: Permite herdar definições de campos de outras coleções. Suporta herança de uma ou várias coleções.
- Exemplo:
filterTargetKey - Chave Alvo para Filtro
- Tipo:
string | string[] - Obrigatório: ❌
- Descrição: A chave alvo usada para filtrar consultas. Suporta uma ou várias chaves.
- Exemplo:
fields - Definições de Campos
- Tipo:
FieldOptions[] - Obrigatório: ❌
- Valor Padrão:
[] - Descrição: Um array de definições de campos para a coleção. Cada campo inclui informações como tipo, nome e configuração.
- Exemplo:
model - Modelo Personalizado
- Tipo:
string | ModelStatic<Model> - Obrigatório: ❌
- Descrição: Especifique uma classe de modelo Sequelize personalizada, que pode ser o nome da classe ou a própria classe do modelo.
- Exemplo:
repository - Repositório Personalizado
- Tipo:
string | RepositoryType - Obrigatório: ❌
- Descrição: Especifique uma classe de repositório personalizada para lidar com a lógica de acesso a dados.
- Exemplo:
autoGenId - Gerar ID Automaticamente
- Tipo:
boolean - Obrigatório: ❌
- Valor Padrão:
true - Descrição: Define se um ID de chave primária deve ser gerado automaticamente.
- Exemplo:
timestamps - Habilitar Timestamps
- Tipo:
boolean - Obrigatório: ❌
- Valor Padrão:
true - Descrição: Define se os campos
createdAt(data de criação) eupdatedAt(data de atualização) devem ser habilitados. - Exemplo:
createdAt - Campo de Data de Criação
- Tipo:
boolean | string - Obrigatório: ❌
- Valor Padrão:
true - Descrição: Configuração para o campo
createdAt. - Exemplo:
updatedAt - Campo de Data de Atualização
- Tipo:
boolean | string - Obrigatório: ❌
- Valor Padrão:
true - Descrição: Configuração para o campo
updatedAt. - Exemplo:
deletedAt - Campo de Exclusão Lógica (Soft Delete)
- Tipo:
boolean | string - Obrigatório: ❌
- Valor Padrão:
false - Descrição: Configuração para o campo de exclusão lógica.
- Exemplo:
paranoid - Modo de Exclusão Lógica (Soft Delete)
- Tipo:
boolean - Obrigatório: ❌
- Valor Padrão:
false - Descrição: Define se o modo de exclusão lógica deve ser habilitado.
- Exemplo:
underscored - Nomenclatura com Underscore
- Tipo:
boolean - Obrigatório: ❌
- Valor Padrão:
false - Descrição: Define se deve ser usado o estilo de nomenclatura com sublinhado (snake_case) para os nomes das colunas no banco de dados.
- Exemplo:
indexes - Configuração de Índices
- Tipo:
ModelIndexesOptions[] - Obrigatório: ❌
- Descrição: Configuração de índices do banco de dados.
- Exemplo:
Configuração de Parâmetros de Campo
NocoBase suporta vários tipos de campos, todos definidos com base no tipo de união FieldOptions. A configuração do campo inclui propriedades básicas, propriedades específicas do tipo de dados, propriedades de relacionamento e propriedades de renderização de frontend.
Opções Básicas de Campo
Todos os tipos de campos herdam de BaseFieldOptions, fornecendo capacidades comuns de configuração de campo:
Exemplo:
name - Nome do Campo
- Tipo:
string - Obrigatório: ❌
- Descrição: O nome da coluna do campo no banco de dados, que deve ser exclusivo dentro da coleção.
- Exemplo:
hidden - Ocultar Campo
- Tipo:
boolean - Valor Padrão:
false - Descrição: Define se este campo deve ser ocultado por padrão em listas e formulários.
- Exemplo:
validation - Regras de Validação
- Tipo:
ValidationOptions<T> - Descrição: Use Joi para definir regras de validação no lado do servidor.
- Exemplo:
allowNull - Permitir Valores Nulos
- Tipo:
boolean - Valor Padrão:
true - Descrição: Controla se o banco de dados permite a escrita de valores
NULL. - Exemplo:
defaultValue - Valor Padrão
- Tipo:
any - Descrição: O valor padrão para o campo, usado quando um registro é criado sem fornecer um valor para este campo.
- Exemplo:
unique - Restrição de Unicidade
- Tipo:
boolean | string - Valor Padrão:
false - Descrição: Define se o valor deve ser único. Uma string pode ser usada para especificar o nome da restrição.
- Exemplo:
primaryKey - Chave Primária
- Tipo:
boolean - Valor Padrão:
false - Descrição: Declara este campo como a chave primária.
- Exemplo:
autoIncrement - Auto-incremento
- Tipo:
boolean - Valor Padrão:
false - Descrição: Habilita o auto-incremento (aplicável apenas a campos numéricos).
- Exemplo:
field - Nome da Coluna no Banco de Dados
- Tipo:
string - Descrição: Especifica o nome real da coluna no banco de dados (consistente com o
fielddo Sequelize). - Exemplo:
comment - Comentário do Banco de Dados
- Tipo:
string - Descrição: Um comentário para o campo do banco de dados, usado para fins de documentação.
- Exemplo:
title - Título de Exibição
- Tipo:
string - Descrição: O título de exibição para o campo, comumente usado na interface do frontend.
- Exemplo:
description - Descrição do Campo
- Tipo:
string - Descrição: Informações descritivas sobre o campo para ajudar os usuários a entenderem sua finalidade.
- Exemplo:
interface - Componente de Interface
- Tipo:
string - Descrição: O componente de interface de frontend recomendado para o campo.
- Exemplo:
Interfaces de Tipos de Campo
type: 'string' - Campo de String
- Descrição: Usado para armazenar dados de texto curtos. Suporta limites de comprimento e remoção automática de espaços.
- Tipo de Banco de Dados:
VARCHAR - Propriedades Específicas:
length: Limite de comprimento da string.trim: Define se deve remover automaticamente espaços iniciais e finais.
Exemplo:
type: 'text' - Campo de Texto
- Descrição: Usado para armazenar dados de texto longos. Suporta diferentes tipos de texto no MySQL.
- Tipo de Banco de Dados:
TEXT,MEDIUMTEXT,LONGTEXT - Propriedades Específicas:
length: Tipo de comprimento de texto do MySQL (tiny/medium/long).
Exemplo:
Tipos Numéricos
type: 'integer' - Campo de Inteiro
- Descrição: Usado para armazenar dados inteiros. Suporta auto-incremento e chave primária.
- Tipo de Banco de Dados:
INTEGER
Exemplo:
type: 'bigInt' - Campo de Inteiro Grande
- Descrição: Usado para armazenar dados inteiros grandes, com um intervalo maior que
integer. - Tipo de Banco de Dados:
BIGINT
Exemplo:
type: 'float' - Campo de Ponto Flutuante (Float)
- Descrição: Usado para armazenar números de ponto flutuante de precisão simples.
- Tipo de Banco de Dados:
FLOAT - Propriedades Específicas:
precision: A precisão (número total de dígitos).scale: O número de casas decimais.
Exemplo:
type: 'double' - Campo de Ponto Flutuante de Dupla Precisão (Double)
- Descrição: Usado para armazenar números de ponto flutuante de dupla precisão, que possuem maior precisão que
float. - Tipo de Banco de Dados:
DOUBLE - Propriedades Específicas:
precision: A precisão (número total de dígitos).scale: O número de casas decimais.
Exemplo:
type: 'real' - Campo de Número Real
- Descrição: Usado para armazenar números reais; dependente do banco de dados.
- Tipo de Banco de Dados:
REAL - Propriedades Específicas:
precision: A precisão (número total de dígitos).scale: O número de casas decimais.
Exemplo:
type: 'decimal' - Campo Decimal
- Descrição: Usado para armazenar números decimais exatos, adequado para cálculos financeiros.
- Tipo de Banco de Dados:
DECIMAL - Propriedades Específicas:
precision: A precisão (número total de dígitos).scale: O número de casas decimais.
Exemplo:
Tipos Booleanos
type: 'boolean' - Campo Booleano
- Descrição: Usado para armazenar valores verdadeiro/falso, tipicamente para estados de ligado/desligado.
- Tipo de Banco de Dados:
BOOLEANouTINYINT(1)
Exemplo:
type: 'radio' - Campo de Rádio
- Descrição: Usado para armazenar um único valor selecionado, tipicamente para escolhas binárias.
- Tipo de Banco de Dados:
BOOLEANouTINYINT(1)
Exemplo:
Tipos de Data e Hora
type: 'date' - Campo de Data
- Descrição: Usado para armazenar dados de data sem informações de tempo.
- Tipo de Banco de Dados:
DATE - Propriedades Específicas:
timezone: Define se deve incluir informações de fuso horário.
Exemplo:
type: 'time' - Campo de Hora
- Descrição: Usado para armazenar dados de hora sem informações de data.
- Tipo de Banco de Dados:
TIME - Propriedades Específicas:
timezone: Define se deve incluir informações de fuso horário.
Exemplo:
type: 'datetimeTz' - Campo de Data e Hora com Fuso Horário
- Descrição: Usado para armazenar dados de data e hora com informações de fuso horário.
- Tipo de Banco de Dados:
TIMESTAMP WITH TIME ZONE - Propriedades Específicas:
timezone: Define se deve incluir informações de fuso horário.
Exemplo:
type: 'datetimeNoTz' - Campo de Data e Hora sem Fuso Horário
- Descrição: Usado para armazenar dados de data e hora sem informações de fuso horário.
- Tipo de Banco de Dados:
TIMESTAMPouDATETIME - Propriedades Específicas:
timezone: Define se deve incluir informações de fuso horário.
Exemplo:
type: 'dateOnly' - Campo Somente de Data
- Descrição: Usado para armazenar dados contendo apenas a data, sem a hora.
- Tipo de Banco de Dados:
DATE - Exemplo:
type: 'unixTimestamp' - Campo de Timestamp Unix
- Descrição: Usado para armazenar dados de timestamp Unix.
- Tipo de Banco de Dados:
BIGINT - Propriedades Específicas:
epoch: O tempo de época (epoch time).
Exemplo:
Tipos JSON
type: 'json' - Campo JSON
- Descrição: Usado para armazenar dados no formato JSON, suportando estruturas de dados complexas.
- Tipo de Banco de Dados:
JSONouTEXT - Exemplo:
type: 'jsonb' - Campo JSONB
- Descrição: Usado para armazenar dados no formato JSONB (específico do PostgreSQL), que suporta indexação e consulta.
- Tipo de Banco de Dados:
JSONB(PostgreSQL) - Exemplo:
Tipos de Array
type: 'array' - Campo de Array
- Descrição: Usado para armazenar dados de array, suportando vários tipos de elementos.
- Tipo de Banco de Dados:
JSONouARRAY - Propriedades Específicas:
dataType: Tipo de armazenamento (json/array).elementType: Tipo de elemento (STRING/INTEGER/BOOLEAN/JSON).
Exemplo:
type: 'set' - Campo de Conjunto (Set)
- Descrição: Usado para armazenar dados de conjunto, que é semelhante a um array, mas com uma restrição de unicidade.
- Tipo de Banco de Dados:
JSONouARRAY - Propriedades Específicas:
dataType: Tipo de armazenamento (json/array).elementType: Tipo de elemento (STRING/INTEGER/BOOLEAN/JSON).
Exemplo:
Tipos de Identificadores
type: 'uuid' - Campo UUID
- Descrição: Usado para armazenar identificadores únicos no formato UUID.
- Tipo de Banco de Dados:
UUIDouVARCHAR(36) - Propriedades Específicas:
autoFill: Preenche o valor automaticamente.
Exemplo:
type: 'nanoid' - Campo Nanoid
- Descrição: Usado para armazenar identificadores únicos curtos no formato Nanoid.
- Tipo de Banco de Dados:
VARCHAR - Propriedades Específicas:
size: Comprimento do ID.customAlphabet: Conjunto de caracteres personalizado.autoFill: Preenche o valor automaticamente.
Exemplo:
type: 'uid' - Campo UID Personalizado
- Descrição: Usado para armazenar identificadores únicos em um formato personalizado.
- Tipo de Banco de Dados:
VARCHAR - Propriedades Específicas:
prefix: Um prefixo para o identificador.pattern: Um padrão de validação.
Exemplo:
type: 'snowflakeId' - Campo ID Snowflake
- Descrição: Usado para armazenar identificadores únicos gerados pelo algoritmo Snowflake.
- Tipo de Banco de Dados:
BIGINT - Exemplo:
Campos Funcionais
type: 'password' - Campo de Senha
- Descrição: Usado para armazenar dados de senha criptografados.
- Tipo de Banco de Dados:
VARCHAR - Propriedades Específicas:
length: Comprimento do hash.randomBytesSize: Tamanho dos bytes aleatórios.
Exemplo:
type: 'encryption' - Campo de Criptografia
- Descrição: Usado para armazenar dados sensíveis criptografados.
- Tipo de Banco de Dados:
VARCHAR - Exemplo:
type: 'virtual' - Campo Virtual
- Descrição: Usado para armazenar dados virtuais calculados que não são armazenados no banco de dados.
- Tipo de Banco de Dados: Nenhum (campo virtual)
- Exemplo:
type: 'context' - Campo de Contexto
- Descrição: Usado para ler dados do contexto de execução (por exemplo, informações do usuário atual).
- Tipo de Banco de Dados: Determinado por
dataType. - Propriedades Específicas:
dataIndex: Caminho do índice de dados.dataType: Tipo de dados.createOnly: Define apenas na criação.
Exemplo:
Campos de Relacionamento
type: 'belongsTo' - Relacionamento Pertence A
- Descrição: Representa um relacionamento de muitos para um, onde o registro atual pertence a outro registro.
- Tipo de Banco de Dados: Campo de chave estrangeira
- Propriedades Específicas:
target: Nome da coleção alvo.foreignKey: Nome do campo de chave estrangeira.targetKey: Nome do campo de chave alvo na coleção alvo.onDelete: Ação em cascata ao excluir.onUpdate: Ação em cascata ao atualizar.constraints: Define se deve habilitar restrições de chave estrangeira.
Exemplo:
type: 'hasOne' - Relacionamento Tem Um
- Descrição: Representa um relacionamento de um para um, onde o registro atual possui um registro relacionado.
- Tipo de Banco de Dados: Campo de chave estrangeira
- Propriedades Específicas:
target: Nome da coleção alvo.foreignKey: Nome do campo de chave estrangeira.sourceKey: Nome do campo de chave de origem na coleção de origem.onDelete: Ação em cascata ao excluir.onUpdate: Ação em cascata ao atualizar.constraints: Define se deve habilitar restrições de chave estrangeira.
Exemplo:
type: 'hasMany' - Relacionamento Tem Muitos
- Descrição: Representa um relacionamento de um para muitos, onde o registro atual possui vários registros relacionados.
- Tipo de Banco de Dados: Campo de chave estrangeira
- Propriedades Específicas:
target: Nome da coleção alvo.foreignKey: Nome do campo de chave estrangeira.sourceKey: Nome do campo de chave de origem na coleção de origem.sortBy: Campo para ordenação.sortable: Define se o campo é ordenável.onDelete: Ação em cascata ao excluir.onUpdate: Ação em cascata ao atualizar.constraints: Define se deve habilitar restrições de chave estrangeira.
Exemplo:
type: 'belongsToMany' - Relacionamento Pertence A Muitos
- Descrição: Representa um relacionamento de muitos para muitos, conectando duas coleções através de uma tabela de junção.
- Tipo de Banco de Dados: Tabela de junção
- Propriedades Específicas:
target: Nome da coleção alvo.through: Nome da tabela de junção.foreignKey: Nome do campo de chave estrangeira.otherKey: A outra chave estrangeira na tabela de junção.sourceKey: Nome do campo de chave de origem na coleção de origem.targetKey: Nome do campo de chave alvo na coleção alvo.onDelete: Ação em cascata ao excluir.onUpdate: Ação em cascata ao atualizar.constraints: Define se deve habilitar restrições de chave estrangeira.
Exemplo:

