连接mongoDB
首先,我们需要定义一个连接,如果你的app仅仅使用一个数据库的话,那么你就使用mongoose.connect()方法,如果你需要创建更多的连接,那么你就使用mongoose.createConnection()方法。
无论是使用那种方法,里面的内容都是mongodb://url.或者host,database,port,options这样的参数。
var mongoose = require("mongoose");
mongoose.connect('mongodb://localhost/myproject');
一旦连接上,open事件就会在connection的实例化中被触发,如果你正使用mongoose.connect,那么这个Connection实例化对象就是mongoose.connection。换句话说,mongoose.createConnection返回值就是Connection。
注意:如果本地连接失败的话,请使用127.0.0.1代替localhost,因为有时候localhostname会被改变。
重点:mongoose缓冲所有的命令,直到连接到数据库。
定义一个模型
我们通过Schema的形式定义一个模型;
var Schema = mongoose.Schema,
ObjectId = Schema.ObjectId;
var BlogPost = new Schema({
author : ObjectId,
title : String,
body : String,
date : Date
});
除了能在你的文档中定义数据结构和数据类型之外,Schema还能处理以下定义:
Validators (async and sync)
Defaults
Getters
Setters
Indexes
Middleware
Methods definition
Statics definition
Plugins
pseudo-JOINs
以下这个例子就会展现出部分特征:
var Comment = new Schema({
name: { type: String, default: 'hahaha' },
age: { type: Number, min: 18, index: true },
bio: { type: String, match: /[a-z]/ },
date: { type: Date, default: Date.now },
buff: Buffer
});
// a setter
Comment.path('name').set(function (v) {
return capitalize(v);
});
// middleware
Comment.pre('save', function (next) {
notify(this.get('email'));
next();
});
接入数据模型
只要我们定义好一个模型,我们就可以通过mongoose.model(“模型名称”,mySchema),我们就可以接入。
var myModel = mongoose.model('ModelName');
var MyModel = mongoose.model('ModelName', mySchema);
mongoose会自动创建一个集合;
var MyModel = mongoose.model('Ticket', mySchema);
在上段代码中,mongoose就会在数据库中创建一个叫tickets的集合,注意啊,不是ticket.
一旦我们创建好一个模型,我们就可以实例化它。
var instance = new MyModel();
instance.my.key = "hello";
instance.save(function(err){
})
MyModel.find({},function(err,docs){
console.log(docs)
})
当然我们也可以对其进行findOne,findById,update等等等。具体看这