Document validation has been introduced to MongoDb since version 3.2 . Before that, we could only define schema on application level. With Mould.js, we could easily define schemas on the database level, which means once the schema validator applied to collections at the bootstrap step, the document will always be validated first whenever it is inserted or modified and the validation will be connection or application independent.
Feature | Mongoose | Mould.js |
---|---|---|
Schema Level | Application | Database |
Features | Full | Minimal |
Attention:
mongodb
version >= 3.2 required
- Installation
npm install mouldjs --save
- Define Schema
let Mould = require('mouldjs')
let User = new Mould({
name : {$type: 'string', $exists: true},
age : {$type: 'int', $lt: 200},
email : {$regex: \"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$"\}
sex : {$in: ['male','female','unknown']}
});
check full schema lists.
- Apply To Db
//with promise
User.applyTo(db, collection)
.then(...)
.catch(...);
Apply the Mould
to specified collection of db
.
db
is an instance of node-mongodb-native-driver Db
class.
If the collection is not found in the db
, the method will create collection for you, then apply the mould.
If the collection is existed and already has some data, the method will success as well.
But later on, any data inserted will be tested against the Schema.
Parameters:
- db: The specified db you want to apply the
Mould
. -- type : should be an instance of node-mongodb-native-driverDb
class. - collection: The specified collection you want to apply
Mould
. -- type : could be aString
which matches the collection name; could also be acollection
instance of node-mongodb-native-driver
Return:
Return a Promise
contains information which indicates whether the application is succeeded or failed.
- type: Promise -- resolve: {ok:1} if success -- reject: error
Check the examples folder
Types: https://docs.mongodb.org/v3.2/reference/operator/query/type/#document-type-available-types
Validator: https://docs.mongodb.org/v3.2/core/document-validation/
TODO
- add validator