ams-core-entity
v0.0.4
Published
The module that defines how an entity is described and should behave.
Downloads
5
Readme
#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' }.