var mongoose = require("mongoose"); var TestSchema = new mongoose.Schema({ name : { type:String }, //属性name,类型为String age : { type:Number, default:0 }, //属性age,类型为Number,默认为0 time : { type:Date, default:Date.now }, email: { type:String,default:''} });
Model
由Schema构造生成的模型,除了Schema定义的数据库骨架以外,还具有数据库操作的行为。
1 2 3 4
//通过Schema来创建Model var db = mongoose.connect("mongodb://127.0.0.1:27017/test"); var TestModel = db.model("test1", TestSchema); // 创建Model //test1为数据库中的集合名称,添加数据时如果test1已经存在,则会保存到其目录下,如果未存在,则会创建test1集合,然后再保存数据。
var mongoose = require('mongoose'); var TempSchema = new mongoose.Schema; TempSchema.add({ name: 'String', email: 'String', age: 'Number' });
Schema实例方法
为后面的Model和Entity提供公共的方法。
1 2 3 4 5 6 7 8
var mongoose = require('mongoose'); var saySchema = new mongoose.Schema({name : String}); saySchema.method('say', function () { console.log('hello'); }) var say = mongoose.model('say', saySchema); var h = new say(); h.say(); //hello
Schema静态方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
var mongoose = require("mongoose"); var db = mongoose.connect("mongodb://127.0.0.1:27017/test"); var TestSchema = new mongoose.Schema({ name : { type:String }, age : { type:Number, default:0 }, email: { type:String, default:"" }, time : { type:Date, default:Date.now } }); TestSchema.static('findByName', function (name, callback) { return this.find({ name: name }, callback); }); var TestModel = db.model("test1", TestSchema ); //查询所有名字叫tom的文档结果集 TestModel.findByName('tom', function (err, docs) { console.log(docs); });
Schema追加方法
有时因为场景的需要,需要为Schema模型追加方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
//为Schema模型追加speak方法 var mongoose = require("mongoose"); var db = mongoose.connect("mongodb://127.0.0.1:27017/test"); var TestSchema = new mongoose.Schema({ name : { type:String }, age : { type:Number, default:0 }, email: { type:String, default:"" }, time : { type:Date, default:Date.now } }); TestSchema.methods.speak = function(){ console.log('我的名字叫'+this.name); } var TestModel = db.model('test1',TestSchema); var TestEntity = new TestModel({name:'Lenka'}); TestEntity.speak(); //我的名字叫Lenka