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:
StringNumberBooleanDateArrayObject
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
emailcomlowercaseetrim - 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.nameprofile.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
DateaceitaDate,stringounumber, desde que o valor resulte em uma data válidaArrayvalida apenas se o valor é um arrayObjectexige um objeto simples e rejeita arrays eDate
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.