一、概念解析:Mongoose:Let’s face it,writing MongoDB validation, casting and business logic boilerplate is a drag. That’s why we wrote Mongoose.Mongoose简单来说就是数据库操作ORMcreateConnection 与 connect:许多入门学徒在看到这两个函数的时候都会有一定疑惑,但是这两个函数其实并不是一个东西,createConnection 创建的并非一个默认的数据库连接,它返回的是一个Connection。我们需要通过这个Connection来创建Model、Instance,然后进行数据表操作,这通常是在程序需要连接多个数据库的情况下使用,否则一般使用connect来打开默认的数据库连接,这时候我们就可以用mongoose.model来创建我们的Model了。var conn = mongoose.createConnection('mongodb://localhost:27017/test'),
MyModel = conn.model('project', projectSchema),
m = new MyModel;
m.save();VSvar conn = mongoose.connect('mongodb://localhost:27017/test'),
MyModel = mongoose.model('project', projectSchema),
m = new MyModel;
m.save();必解名词:Schema : 数据库存储格式的约定协议,可以理解为数据表的字段类型声明。Model : 由Schema转化的数据模型,具有抽象属性和行为的数据库操作,可以进行查询操作Instance: 由Model创建的实体操作对象,可以对数据库表进行完整的CRUD操作 二、Mongoose 使用安装mongoose$ npm install mongoose连接数据库var mongoose = require('mongoose'),
url = 'mongodb://' + dbHost + ':' + dbPort + '/' + dbName;
mongoose.connect(url);
//mongoose.connect('mongodb://localhost:port/databaseName');声明一个Schema模型var Schema = mongoose.Schema,
ObjectId = Schema.Types.ObjectId;
// 用户模型
var userSchema = new Schema({
uid: String, // 用户 id
nick: String, // 用户昵称
pwd: String, // 用户密码
project: [{
type: ObjectId,
ref: 'Project'
}] // 这个用户对应的作品
});将声明的Schema转化为Model// 建立Model
var User = mongoose.model('User', userSchema);将Model实例化为Instancevar user = {
uid: '545183867',
nick: '哈哈哈'
};
var newUser = new User(user);
console.log(newUser.nick);Instance 进行数据库CRUD操作newUser.save(); // 执行完成后,数据库就有该数据了使用Modal进行表查询操作User.find(function(err, users) {
//查询到的所有User
});三、结合KOA框架在KOA中,回调已经基本被抛弃了,所以我们还是来看下KOA中mongoose活得怎么样吧。CRUD操作如今需要加入yield 来确保我们主调调能耐心等待newUser.save()/User.find()的完成,那我们就去掉回调加上yield吧:var user = {
uid: '545183867',
nick: '哈哈哈'
},
newUser = new User(user),
userInfo;
yield newUser.save();
userInfo = yield User.find({
uid: '545183867'
});既然没了错误处理,那么我们以回调实现的错误上报怎么办呢?别忘了,我们还有try catch,好了,套上他们就可以完成错误捕获了:try {
this.data = yield User.find({
uid: '545183867'
});
} catch (e) {
console.log(e);
}以上是Mongoose与KOA框架结合的一个简单入门,因为时间关系就只介绍到这里了,希望能对mongoose新手有所帮助。