Nutella with Pepperoni and Mushrooms

    @nxus/storage

    2.4.0-5 • Public • Published

    @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}

    Install

    npm i @nxus/storage

    DownloadsWeekly Downloads

    25

    Version

    2.4.0-5

    License

    MIT

    Last publish

    Collaborators

    • avatar
    • avatar
    • avatar