ams-core-entity

0.0.4 • Public • Published

AMS Core Entity

The module that defines how an entity is described and should behave.

Schema

To create a model, you need to define a schema.

  var schema = new Schema({
    name:    String,
    binary:  Buffer,
    living:  Boolean,
    updated: { type: Date, default: Date.now },
    age:     { type: Number, min: 18, max: 65 },
    array:      [],
    ofString:   [String],
    ofNumber:   [Number],
    ofDates:    [Date],
    ofBoolean:  [Boolean],
    nested: {
      stuff: { type: String, lowercase: true, trim: true }
    }
  })

Validation

If you want to validate you model, you need define how this Model should be configured.

Example:

  var vehicule = new Schema({
    name: {
      type: String,
      required: true,
    },
    tires: {
      type: Number,
      min: 1,
      max: 8
    },
    engineType: {
      type: String,
      enum: ['Electrical', 'Diesel', 'Gaz']
    },
    color: {
      type: String,
      regex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/
    }
  })

Custom Validation

You can create custom validation for the

  var userSchema = new Schema({
    phone: {
      type: String,
      validate: {
        name: 'validatePhone',
        validator: function(v) {
          return /\d{3}-\d{3}-\d{4}/.test(v);
        },
      },
      required: true
    }
  });

Custom Validation Async

  var userSchema = new Schema({
    phone: {
      type: String,
      validate: {
        name: 'validatePhone',
        validator: function(v, cb) {
          setTimeout(function() {
            cb(/\d{3}-\d{3}-\d{4}/.test(v));
          }, 5);
        },
      },
      required: [true, 'User phone number required']
    }
  });

Schema

The relation between the Entities are done with the defineRelation method. It can take a 'hasMany' or a 'hasOne' relation. Nested object are object that belongs to the Entity.

Nested object that are not Entity should be defined directly in the schema. Something like { line1: '5th avenue', city: 'NYC' }.

Readme

Keywords

none

Package Sidebar

Install

npm i ams-core-entity

Weekly Downloads

0

Version

0.0.4

License

ISC

Last publish

Collaborators

  • dervalp