Mongoose Schema
Constructor
Defines a schema with the definition. Definition of the schema need to in bson form. Means {fieldname :{field options}}
Syntax :- Schema(definition, [options])
Some key options are
- autoIndex: bool - defaults to null (which means use the connection's autoIndex option)
- capped: bool - defaults to false
- collection: string - no default (collection name that we need)
- versionKey: string - defaults to "__v"
example :-
var userSchema= new Schema({ userid: {type:String, required:true, trim:true}, chips: {type:Number} });
Notes:-
- Mongoose will add 's' letter to the collection . means if collection name is 'user' then it will be saved as 'users'.
- If we need to give custon naming (without s) then use 'collection' option as
new Schema({.....},{collection:user});
Add()
If we want to add the filed to a defined schema we can do this using Add() method.
It's syntax is:
add(obj,prefix)
Example:-
for the above userSchema now I need to add the
fields
- 'regdate' to hold date of registration
- 'usertype' to indicate user is player or promoter (agent)
userSchema.add({ regdate:Date, usertype:{type:string,default:'player'} });
get()
get the value of schema option. Means to know the value of an
option which is defined for a schema we can use this.
For
example I need to know does the collection is capped or not then
I will use the get() method with capped option to know capped
status.
Syntax: get(optionkey)
Example:
console.log(userSchema.get('capped')); console.log(userSchema.get('autoIndex));
set()
Sets/gets a schema option.
Syntax: set(key, [value])
Example:
userSchema.set('capped',false); userSchema.set('strict',false);
index()
Defines an index for the schema, means if we want to create an
index to a schema then we can do using this method.
Compound
index creation is not possible at schema definition (in schema()
or add()) using index() method only we can create compound
index.
Syntax:
index(fields, [options], [options.expires=null])
Note:-
Here options refers MongoDB index options like
'unique','sparse','name','expireAfterSeconds' etc.
Example:-
userSchema.index({userid:1},{name:'useridindex',unique:true})
method()
How to create an instance method for a schema in mongoose
Adds an instance method to documents constructed from Models
compiled from this schema.
In order to add a method to a
schema then we will use this.
Syntax:
method(methodname, function code)
Example:-
var userSchema= new Schema({ userid: {type:String, required:true, trim:true}, chips: type:Double }); userSchema.method('getInfo',function(){ console.log(“userid:\t”+this.userid+”\tchips own:\t”+this.chips); }); userSchema.method('getChips',function(){ return this.chips; });
Example to call those methods:-
var userModel = mongoose.model('users',userSchema); var alex = new userModel({userid:'Alex',chips:10000,regdate:Date.now}); alex.getInfo(); console.log(alex.getChips());
static()
How to create an instance method for a schema in mongoose
Adds static "class" methods to Models compiled from
this schema.
Syntax:-
static(method
name,function def);
Example:-
userSchema.static('getSchemaName',function(){ return 'users'; }); userSchema.static('saveDoc',function(query){ // some coding });
Way to call static methods:-
Schemaname.staticmethodname
Like
console.log(userSchema.getSchemaName());
pre()
post()