Netpress Laravel-inspired backend framework for Node.js
Frameworkv0.1.14 Starterv0.1.12 Docsv1.0.3
Overview Installation Architecture CLI
Reference

Observers

Observers let you group model lifecycle hooks in one class. They are useful when a model needs side effects around create, update, or delete operations.

Quick Example

// app/Observers/PostObserver.js
export default class PostObserver {
  async creating(post) {
    if (!post.slug && post.title) {
      post.slug = post.title.toLowerCase().replaceAll(" ", "-");
    }
  }

  async deleted(post) {
    console.log(`Post ${post.id} deleted`);
  }
}

Register it:

// app/Providers/EventServiceProvider.js
static get observers() {
  return {
    Post: [PostObserver],
  };
}

Explanation

The netpress package provides the observer registry. Model wrappers call notify(modelName, event, payload) around lifecycle operations, and registered observers receive those hooks in order.

The common hook names are:

  • creating and created
  • updating and updated
  • deleting and deleted

Additional Examples

Create a new observer:

npm run artisan -- make:observer PostObserver --model=Post

Cancel an action from a *ing hook:

async deleting(post) {
  if (post.isLocked) {
    return false;
  }
}

Advanced Usage

Use observers for model lifecycle rules, not for every business action. If the behavior depends on several services or external APIs, a domain service or event listener is usually a better fit.

Notes / Tips

  • Keep observers small and model-focused.
  • Return false from an *ing hook when you need to stop the operation.
  • Register observers in EventServiceProvider so the boot path stays obvious.