The HasModels class is a Base class for defining helper classes with Models.

HasModels
Instance Members
modelNames()

Build Status

A storage framework for Nxus applications using waterline.

Configuration

"config": {
  "storage": {
    "adapter": {
      "default": "sails-mongo"
    },
    "connections": {
      "default": {
        "adapter": "default",
        "url": "mongodb://...."
      }
    },
    "modelsDir": "./src/models"
  }
}

Creating models

Inherit your models from BaseModel

import {BaseModel} from '@nxus/storage'

var User = BaseModel.extend({
  identity: 'user',
  attributes: {
    name: 'string'
  }
})

Model events

The storage model emits events for create, update, and destroy, you can register a handler for all events:

  app.get('storage').on('model.create', (identity, record) => {})
  app.get('storage').on('model.update', (identity, record) => {})
  app.get('storage').on('model.destroy', (identity, record) => {})

Or just a specific model identity:

  app.get('storage').on('model.create.user', (identity, record) => {})
  app.get('storage').on('model.update.user', (identity, record) => {})
  app.get('storage').on('model.destroy.user', (identity, record) => {})

Lifecycle notes

  • load

    • Models should be registered during load, e.g. var User = BaseModel.extend({ identity: 'user', ... }); app.get('storage').model(User)
  • startup

    • The configured database is connected during load.after

    • You can query models from startup and beyond, retrieve the model by the 'identity':

      app.get('storage').getModel('user').then((User) => {
          User.create(...);
      });
      

API


Storage provides a common interface for defining models. Uses the Waterline ORM.

index

Provide a model

model(model: object)
Parameters
model (object) A Waterline-compatible model class
Example
app.get('storage').model(...)

Request a model based on its identity (name)

getModel(id: (string | array)): Promise
Parameters
id ((string | array)) The identity of a registered model, or array of identities
Returns
Promise: The model class(es)
Example
app.get('storage').getModel('user')