UNPKG

angoose

Version:

Angoose is a Remote Method Invocation module that comes with built-in mongoose/angular support. Now you can call server side module in browser just like you're in the server side!

64 lines (60 loc) 2.29 kB
var angoose = require("../lib/angoose"); var mongoose = angoose.getMongoose(); var SampleSchema = mongoose.Schema({ email: {type: String, required: true, match: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i, unique:true}, firstname: {type: String, required:true }, lastname: {type: String, required:true }, status: {type: String, enum: ['inactive', 'active', 'disabled', 'archived'], required:true, def:'inactive' }, password: { type:String }, verified: Boolean, groupRef: {type: mongoose.Schema.Types.ObjectId, ref: 'SampeUserGroup'} }, { collection:'SampleUsers', discriminatorKey: 'type' } ); var sampleUserData = { firstname:'Gaelyn', lastname:'Hurd', status:'active', email: 'gaelyn@hurd.com', }; SampleSchema.methods.getFullname= function portable(){ //_instance_portable console.log("getFullname", this); return (this.firstname ? this.firstname +" ": "") + (this.lastname || ""); } SampleSchema.methods.setPassword= function(newPassword, $context, $callback){ // instance method, reset user's password. if(!$callback ) throw "$callback not injected"; if(!$context) throw "$context not injected"; //var cryptor = require("crypto"); // require node module crypto //this.password = cryptor.encrypt("salt", newPassword); this.password = newPassword +"salt123"; // fake code $callback(false, "Password changed"); } SampleSchema.statics.getSample = function(){ // this should refer to the model class console.log("get sample user"); var instance = new this( sampleUserData); return instance; } SampleSchema.statics.checkExists = function(email){ //_static_remote console.log("in checkExists",email); require("fs"); // do a server side operation to ensure this can only be done in the server side. if(email && email.indexOf('new')>=0) return false; return true; } var SampleUser = mongoose.model('SampleUser', SampleSchema); module.exports = SampleUser; SampleSchema.path('email').validate(function(value, respond){ if(value && value.indexOf(".org")>0){ process.nextTick(function(){ respond(false) }) } else respond(true); }, "I don't like .org emails")