Pular para o conteúdo principal

fields

O objeto fields exportado pelo oon-core-back fornece helpers tipados para declarar schemas. Cada helper gera um descriptor Mongoose + um bloco __meta que o Core usa para gerar a metadata do frontend.

const { fields } = require("@oondemand/oon-core-back");

Referência completa

fields.string(opts?)

fields.string({
required?: boolean, // default: false
default?: string,
label?: string, // exibido no frontend
searchable?: boolean, // inclui na busca full-text. Default: true
})

fields.number(opts?)

fields.number({
required?: boolean,
default?: number,
label?: string,
})

fields.boolean(opts?)

fields.boolean({
required?: boolean,
default?: boolean, // default: false
label?: string,
})

fields.date(opts?)

fields.date({
required?: boolean,
default?: Date | string,
label?: string,
})

fields.ref(modelName, opts?)

Referência a outro Model (ObjectId com populate automático).

fields.ref("Cliente", {
required?: boolean,
label?: string,
})

fields.enum(values, opts?)

fields.enum(["ativo", "inativo", "suspenso"], {
required?: boolean,
default?: string,
label?: string,
})

fields.currency(opts?)

Valor monetário (Number ≥ 0). Renderizado como moeda no frontend.

fields.currency({
required?: boolean,
default?: number, // default: 0
label?: string,
})

fields.currencyCode(opts?)

Código ISO 4217 de 3 letras (ex.: "BRL", "USD", "EUR").

fields.currencyCode({
required?: boolean,
default?: string, // default: "BRL"
label?: string,
})

fields.currencyConverted(opts?)

Valor convertido para uma moeda base (calculado pelo módulo currencies).

fields.currencyConverted({
base?: string, // moeda base. Default: "BRL"
default?: number, // default: 0
label?: string,
})

Exemplo completo

src/models/Cotacao.js
const { defineModel, fields } = require("@oondemand/oon-core-back");

defineModel({
name: "Cotacao",
schema: {
fornecedor: fields.ref("Fornecedor", { required: true, label: "Fornecedor" }),
descricao: fields.string({ required: true, label: "Descrição" }),
valor: fields.currency({ required: true, label: "Valor" }),
moeda: fields.currencyCode({ label: "Moeda" }),
valorEmBRL: fields.currencyConverted({ base: "BRL", label: "Valor em BRL" }),
status: fields.enum(["pendente", "aprovada", "recusada"], {
default: "pendente",
label: "Status",
}),
dataValidade: fields.date({ label: "Válido até" }),
},
});

Usando Mongoose puro (escape hatch)

Se precisar de um tipo que fields não cobre, use o descriptor Mongoose diretamente. O Core inclui o campo mas não gera metadata rica para ele (kind = "raw"):

schema: {
tags: [{ type: String }], // array simples
metadata: { type: Map, of: String },
}