Introduction
Example
User.js
'use strict'
var Mongool = require('mongool')
var ObjectID = require('mongodb').ObjectID
var User = Mongool.Model()
User.db = "test"
User.collection = 'Users'
User.schema = {
"_id": {
type: ObjectID,
},
"username": {
type: String,
unique: true,
required: true,
max: 20
},
"password": {
type: String,
min: 6,
setter: function(value){
return value
},
required: true
},
}
module.exports = User
App.js
var User = require('./User')
var Mongool = require('mongool')
var connection = Mongool.connect()
User.connection = connection
var currentuser = new User({
username: "HelloWorld",
password: "123456"
})
async function doStuff(){
console.log(currentuser.get())
await currentuser.validate()
await currentuser.save()
await currentuser.remove()
}
doStuff()
Coming Soon
- Indexes
- Optimisations
- Mass Assignability
- Hidden Variables (for
.get()
's)
- Better Getter/Setters
- Better Validation
- Better documentation
- .save only on changes
Schema Rules
Types
String
Number
ObjectID
Date
Boolean
[]
{}
Stacking Schemas
var schema = {
"profile": {
type: {
"first-name": {
type: String,
max: 16
}
"last-name": {
type: String,
max: 16
}
"nationalities": {
type: [{
type: String,
max: 30
}],
max: 5
}
}
}
}
{
"profile":{
"first-name": "James"
"last-name": "Smith"
"Nationalities": ["Australian", "British"]
}
}
Validation Rules
{
type: Type,
min: Number,
max: Number,
size: Number,
required: Boolean,
present: Boolean,
is: Array,
is: *,
after: Date,
before: Date,
regex: RegExp,
alpha: Boolean,
alphaNumeric: Boolean,
alphaDash: Boolean,
custom: Function,
unique: Boolean,
}
Other Schema Rules
{
default: var
custom: function(document, item, schema, level, model){
var errors = {}
return errors
}
}
Model Functions
Statics
var count = await User.count(query)
var user = await User.findOne(query)
var connection = await User.CollectionConnection()
var users = await User.find(query)
State
var user = new User()
user.get()
await user.validate()
await user.save()
await user.remove()
Custom Statics
User.findByUsername = async function findByUsername(username){
return await this.findOne({"username": username})
}