@nxus/storage

Storage framework for Nxus applications

Usage no npm install needed!

<script type="module">
  import nxusStorage from 'https://cdn.skypack.dev/@nxus/storage';
</script>

README

@nxus/storage

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

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

getModel

Request a model based on its identity (name)

Parameters

  • id (string|array) The identity of a registered model, or array of identities

Examples

app.get('storage').getModel('user')

Returns Promise The model class(es)

model

Provide a model

Parameters

  • model object A Waterline-compatible model class

Examples

app.get('storage').model(...)

HasModels

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

modelNames

Override to define the model names to access

Examples

modelNames() { 
  return ['user']
}

Returns (array|object) Model identities to add to this.models, or object of {identity: name}