1.2.1 • Published 11 years ago

moodle v1.2.1

Weekly downloads
3
License
-
Repository
github
Last release
11 years ago

moodle Build Status

Install

$ npm install moodle

Usage

Create model (example file)

    
    var db    = require('your-mongo-instance');
    var Model = require('moodle');
    
    var User = new Model('User');
    
    User.storage('mongodb')
        .connect(
            function() { 
                // Return your mongo instance with selected collection
                return db.users 
            }
        );

    /**
     * Define attributes
     */
    User.attr('_id', 'ObjectId');
    
    User.attr('username', 'String')
        .required();
    
    User.attr('permissions', 'Object');
    
    User.attr('password', 'String')
        .required();
    
    User.attr('last_login', 'Date')
        .default(null);
    
    User.attr('status', 'Bool')
        .default(true)
        .required();
    
    modules.export = User;

Using the model

    
    var User = require('./models/user');

    /**
     * Save new
     */
    var user = new User();
    
    user.owner("51223c75bb64ba8d60000000");
    user.username("root");
    user.password("secret");
    user.permissions({
        wheel: true
    });

    user.save(function(err) {
        if (err) throw err;
        
        user._id(); // return the generated _id
        // _id
        
        console.log("saved!");
    });

    /**
     * Update model
     */
    User.findOne({_id: "51519576d2381d38df000003"}, function(err, user) {
        if (err) throw err;
        
        user.last_login(new Date());
        user.save(function(err) {
            if (err) throw err;
        });
    });

    /**
     * Find multiple
     */
    User.find({status:true}, function(err, users) {
    
        for (var user in users) {
            if (user instanceof User)
                // true
        
        }
    
    });

Supported storages

Supported attribute types

  • String
  • Integer
  • Bool
  • Enum
  • Id
  • ObjectId
  • Object
  • Array
  • Date

API

Attribute API

.alias()

Set an alias name for this attribute. It will be used for the error messages.

Returns the Attribute object for chaining.

.required(/ bool /)

Set this attribute as requirement. If a field is not required and not undefined, it will be validated. Otherwise, if it's required, it will be validated in every case.

Returns the Attribute object for chaining.

.validator(/ function(self, value) {} /)

Add your own function to validate a field. This function is called with two parameters, the current attribute instance and the value. Errors have to be pushed to self.errors.

Example:

function(self, v) {
    if (!v instanceof Array) {
        self.errors.push("Not a valid array: "+v);
    }
}

Returns the Attribute object for chaining.

.default(/ mixed /)

Set the default value of this attribute. If a value is undefined, the default value is used.

Returns the Attribute object for chaining.

.option(/ string /) -> only for "Enum"

Adds a possible option to this attribute. Only added options were validated.

Returns the Attribute object for chaining.

1.2.1

11 years ago

1.2.0

11 years ago

1.1.8

11 years ago

1.1.7

12 years ago

1.1.6

12 years ago

1.1.5

12 years ago

1.1.4

12 years ago

1.1.3

12 years ago

1.1.2

12 years ago

1.1.1

12 years ago

1.0.0

12 years ago