Neighborly Package Megalodon
Miss any of our Open RFC calls?Watch the recordings here! »

crunchpow-model

1.1.2 • Public • Published

crunchpow-model

travis build MIT License version

This is a microlibrary for better handling of models with schemas. Includes CRUD functions to alter the model on the backend without having to write the CRUD functions (promise returned) in your service.

Model Usage:

  • Import package const CPModel = require('crunchpow-model').
  • Set up schema as const schema = {myProp: 'string', multipleTypes: 'string|number', user: {name:'string'}}. Type can be string|number|array|boolean.
  • let myModel = new CPModel('myModelName' schema);.
  • myModel.create([dataObj]). dataObj must be in a format that validates against the schema. This is for getting a model from the back-end and casting it as a crunchpow-model.
  • Use myModel.prop('myProp','new value') to set. Nested properties can be set by `myModel.prop('user.name','new value').
  • Use myModel.myProp to get property.

HTTP usage:

  • using myModel.save() saves the current model
  • using myModel.destroy(id) destroys a model based on the passed in id. Probably will update this to have the id optional and delete the current model.
  • using myModel.fetch([id]) gets the model if id is passed in. Otherwise, it returns a list of all models 'myModel'.

TODO:

  • Allow omitting of schema so structure/types aren't essential.
  • Allow autosaving on setting property. Should use a debounce/throttle function so it does't hit the backend until needed.
  • Allow setting of base url.
  • Find alternates to dependencies so the size is reduced.

Keywords

none