Skip to content
This repository has been archived by the owner on Jan 3, 2024. It is now read-only.

Use events to manage and observe Waterline models' lifecycle

License

Notifications You must be signed in to change notification settings

Dreamscapes/sails-hook-events

Repository files navigation

sails-hook-events

NPM Version Build Status Coverage Status Runs on Node Built with GNU Make Uses ECMAScript 2015

Use events to manage and observe Waterline models' lifecycle

Description

This hook allows you to use event-driven programming when working with your Waterline models. It adds new events emitted from your Sails.js instance that you can subscribe to and perform actions when such an event is emitted.

Usage

Events added

The events are named separately for each model you have defined. they have the following structure:

model:event

Where model is the name of your model in lowercase, i.e. user, and event is one of the following:

  • created
  • updated
  • destroyed

To put it all together, here are some examples of events emitted:

  • user:created
  • order:updated

Example usage

// First, set up an event handler to listen for newly created users

// Assuming you have sails exposed as global property
sails.on('user:created', model => {
  // model is the object which has been created in the database
  //  with all its properties etc.

  // Perhaps send this user an email? We will use an imaginary
  // email service in our app:
  sails.services.email.send({ to: model.email, subject: 'Welcome' }, 'emails/welcome')
})

// And here is the code which will trigger the above event

sails.models.user.create({ email: 'user@example.com' })
.then(user => {
  // ...
})

Installation

Just add this npm module into your Sails' package.json:

$ npm install --save sails-hook-events

License

This software is licensed under the BSD-3-Clause License. See the LICENSE file for more information.