v1.2adapters/sqlite
Tile.JS
Tile.JS

Campos e validação

Veja tipos suportados, opções de campo, objetos aninhados e limites do schema.

Campos e validação

Tipos suportados

O Tile entende estes tipos internos:

  • String
  • Number
  • Boolean
  • Date
  • Array
  • Object

Você pode declarar usando construtores:

const schema = new Schema({
  name: String,
  age: Number,
  active: Boolean,
  createdAtSource: Date,
  tags: Array,
  profile: Object,
});

Opções de campo

Prop

Type

Normalização e validação

const schema = new Schema({
  email: {
    type: String,
    required: true,
    lowercase: true,
    trim: true,
  },
  visits: {
    type: Number,
    min: 0,
  },
  role: {
    type: String,
    enum: ["admin", "member"],
  },
});

Nesse exemplo, o Tile:

  • normaliza email com lowercase e trim
  • rejeita visits < 0
  • rejeita valores fora do enum

Objetos aninhados viram dot-paths

const schema = new Schema({
  profile: {
    name: String,
    email: { type: String, unique: true },
  },
});

Internamente, o schema passa a enxergar:

  • profile.name
  • profile.email

Isso vale para:

  • validação
  • defaults
  • updates
  • filtros simples

Exemplo de filtro:

await database.member.findOne({
  "profile.email": "ada@example.com",
});

Datas, arrays e objetos

  • Date aceita Date, string ou number, desde que o valor resulte em uma data válida
  • Array valida apenas se o valor é um array
  • Object exige um objeto simples e rejeita arrays e Date

Schema não é strict

Campos fora do schema não são removidos automaticamente. Se você passar propriedades extras no documento ou em um update, elas podem ser persistidas normalmente.

Limitações atuais importantes

Array não descreve o tipo dos itens, e options._id = false hoje afeta a descrição do schema, mas os documentos continuam recebendo _id internamente.

Próximo passo

On this page