Database
Schema
Defina a estrutura e as regras dos documentos
Schema
O Schema define a estrutura dos documentos de uma Collection.
Além dos tipos dos campos, ele também controla validações, valores padrão, índices únicos e configurações como timestamps.
Criando um Schema
import { Schema } from "@tilejs/database";
interface Member {
_id?: string;
name: string;
email: string;
age?: number;
}
export const memberSchema = new Schema<Member>({
name: {
type: String,
required: true,
trim: true,
},
email: {
type: String,
required: true,
unique: true,
lowercase: true,
},
age: {
type: Number,
min: 0,
},
});Configuração de campos
Prop
Type
Opções do Schema
O construtor também aceita opções para controlar o comportamento da Collection.
const schema = new Schema(
{
name: String,
},
{
timestamps: true,
versionKey: true,
_id: true,
collection: "members",
}
);Prop
Type
Campos internos
Por padrão, o TileJS adiciona automaticamente alguns campos.
| Campo | Descrição |
|---|---|
_id | Identificador único do documento. |
__v | Controle interno de versão. |
createdAt | Data de criação (quando timestamps está ativo). |
updatedAt | Data da última atualização (quando timestamps está ativo). |
Índices únicos
Todo campo definido com unique: true recebe automaticamente um índice próprio.
email: {
type: String,
unique: true,
}Isso gera:
_collection_index_email.json
Conteúdo:
{
"john@example.com": "68526dba05db8ec36dcb33d8"
}Os índices são utilizados para impedir valores duplicados e acelerar consultas por campos únicos.
Descrevendo um Schema
O método describe() retorna uma descrição completa do Schema.
console.log(memberSchema.describe());Saída:
{
fields: {
_id: { ... },
name: { ... },
email: { ... },
age: { ... },
__v: { ... }
},
timestamps: true,
collection: undefined
}Próximo passo
Agora que você criou um Schema, é hora de utilizá-lo em uma Collection.