@nxus/storage
v2.4.0-5
Published
Storage framework for Nxus applications
Downloads
5
Readme
@nxus/storage
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)
- Models should be registered during
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
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}