1.0.1 • Published 3 years ago

superb-model.js v1.0.1

Weekly downloads
8
License
-
Repository
-
Last release
3 years ago

superb-model.js

Helps to create classes that can communicate to REST endpoints using AJAX for CRUD.

Installation

You can install from npm.

npm install superb-model.js --save

Examples

Fetching a model from server

import { Model, model, field } from 'superb-model.js';

@model('todos')
class Todo extends Model {

  @field({ idKey: true })
  id = null;

  @field('detail')
  description = null;

  constructor(id, description) {
    super();
    this.id = id;
    this.description = description;
  }
}

const todo = new Todo(1);
await todo.get();

Creating a new model

const todo = new Todo();
todo.description = 'Develop `model.js` Library';
await todo.post();

Updating an existing model

const todo = new Todo(1);
await todo.get();
todo.description = 'Description updated';
await todo.put();

Deleting a model

const todo = new Todo(1);
await todo.get();
await todo.remove();

Using collections

import { Collection, collection } from 'superb-model.js';
import { Todo } from './todo'; 

@collection('todos')
class Todos extends Collection {

  constructor() {
    super(Todo);
  }
}

const myTodos = new Todos()
await myTodos.query({ pagination: [1, 10], sort: { field: 'description', order: 'asc' } });

API

@model decorator

Helps to define metadata information to a model class.

@model(string) - The passed string can be either an absolute or relative url to which the model is connected with.

@model(object)

The different parameters you can pass in the options object are:

url | string | Required - no | Absolute or relative url to which the model is connected with.

appendBase | boolean | Required - no | True to append the base url.

map | function | Required - no | The function that returns the model instance from the passed data.

emit | function | Required - no | The function that returns data from the model state.

validators | Array<function> | Required - no | Array of synchronous model validators.

asyncValidators | Array<function> | Required - no | Array of asynchronous model validators.

@field decorator

Helps to define metadata information to a property.

@field(string) - The alias name of the field.

@field(object)

The different parameters you can pass in the options object are listed below.

idKey | boolean | Required - no | True if the property is an id field.

alias | string | Required - no | The alias name of the field.

dataType | DataType | Required - no | The data type.

objectType| class | Required - no | The class type.

map | function | Required - no | The function that maps the data.

emit | function | Required - no | The function that returns data from the property state.

ignore | boolean,string | Required - no | Setting true ignores map/emit. Setting "in" ignores map and "out" ignores emit.

validators | Array<function> | Required - no | Array of validators.

asyncValidators | Array<function> | Required - no | Array of async validators.

required | boolean | Required - no | True if the field is required.

minLength | number | Required - no | The minimum length of characters required for the field.

maxLength | number | Required - no | The maximum length of characters acceptable for the field.

min | number | Required - no | The minimum value for the field.

max | number | Required - no | The maximum value for the field.

pattern | RegExp | Required - no | The regex pattern the field value should match.

@collection decorator

Helps to define metadata information to a collection class.

@collection(class) - The model class constructor.

@collection(object)

The different parameters you can pass in the options object are listed below.

type | class | Required - yes | The model class.

url | string | Required - no | Absolute or relative url to which the model is connected with.

appendBase | boolean | Required - no | True to append the base url.

map | function | Required - no | The function that returns the model instance from the passed data.

emit | function | Required - no | The function that returns data from the model state.

validators | Array<function> | Required - no | Array of synchronous model validators.

asyncValidators | Array<function> | Required - no | Array of asynchronous model validators.

Model class properties and methods

Properties

metadata | ModelMetadata | Returns the metadata defined in the model.

Methods

get(requestOptions)

put(requestOptions)

post(requestOptions)

save(requestOptions)

remove(requestOptions)

validate()

validateField(field)

valid(field)

errors(field)

toModel(data)

toData()

Collection class properties and methods

Credits

Inspired from Backbone.Model.

1.0.1

3 years ago

1.0.0

3 years ago