@iamcalegari/mongoat / Pre
Function: Pre()
Pre(
method,fn): (_value,context) =>void
Defined in: src/schema/decorators.ts:170
Registra um hook pre no pipeline de hooks JÁ EXISTENTE do Model (nenhum novo dispatch) — aplicável em CLASSE e em CAMPO:
- Nível de CLASSE:
fnrecebe octxCOMPLETO, mesmo contrato de.pre()/props.hooks((ctx) => void | unknown | Promise<...>). - Nível de CAMPO: açúcar que transforma SÓ o valor do campo —
fntem a assinatura(value, ctx) => novoValor. NÃO retorna um novo inicializador de campo TC39 (o mecanismo de field-initializer do TC39 nunca é usado aqui) — apenas grava metadata; o registro real no pipeline acontece emextractDecoratorHooks(src/schema/compile.ts), consumido pelo constructor doModel.
A ORDEM de execução final por método é campo → classe → hooks do config do Model → .pre()/.post() encadeados — fixada no wiring do Model, não aqui (este decorator só ACUMULA metadata).
method é validado contra o enum METHODS JÁ NA DECORAÇÃO — um nome de método inexistente estoura MongoatValidationError com code: 'INVALID_HOOK_METHOD' imediatamente, em vez de registrar um hook que nunca dispara.
Parameters
method
string
fn
(...args) => unknown
Returns
(_value, context) => void
Example
typescript
class UserSchema {
@Pre('insert', (value, ctx) => hashPassword(value))
@Prop({ bsonType: 'string' })
password!: string;
}