# PreHook Decorator

Module
import { PreHook } from "@tsed/mongoose"
Source/packages/mongoose/src/decorators/preHook.ts

# Overview

function PreHook(method: string, fn?: MongoosePreHookSyncCB<any> | MongoosePreHookAsyncCB<any> | PreHookOptions, options?: PreHookOptions): Function;

# Description

We can simply attach a @PreHook decorator to your model class and define the hook function like you normally would in Mongoose.

import {IgnoreProperty, Required} from "@tsed/common";
import {PreHook, Model} from "@tsed/mongoose";

@Model()
@PreHook("save", (car: CarModel, next) => {
   if (car.model === 'Tesla') {
       car.isFast = true;
     }
     next();
})
export class CarModel {

   @IgnoreProperty()
   _id: string;

   @Required()
   model: string;

   @Required()
   isFast: boolean;

   // or Prehook on static method
   @PreHook("save")
   static preSave(car: CarModel, next) {
      if (car.model === 'Tesla') {
          car.isFast = true;
      }
      next();
   }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

This will execute the pre-save hook each time a CarModel document is saved.