NodeJS学习笔记之mongose
Mongoose是MongoDB的对象模型工具。nodejs和mongodb结合的主要原因是有相同的数据存储格式JSON,在应用层使用具有非常好的连续性,无需太多的代码用来进行数据转换等工作。
就像PHP和JAVA连接Mysql一样,nodejs连接mongodb也需要有驱动driver。mongodb的driver还是有一些的,其中最著名的就是native driver: https://github.com/mongodb/node-mongodb-native, 该项目由mongodb的创建公司10gen进行维护,它提供了一些基础的连接和数据操作的API。
今天我们说的mongoose其实是在mongodb-native之上的一个封装,使得我们对于数据的操作是建立在模型的基础上。Mongoose有一些关键概念:
Schema(模式): 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力
Model(模型): 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对
Entity(实体): 由Model创建的实体,他的操作也会影响数据库
它们之间的关系是:Schema生成Model,Model创造Entity,Model和Entity都可对数据库操作造成影响,但Model比Entity更具操作性。
http://www.cnblogs.com/cubika/p/3501887.html
定义Schema
var userSchema = new mongoose.Schema({
name: {
first: String,
last: { type: String, trim: true }
},
age: { type: Number, min: 0}
});
将Schema发布为Model
var PUser = mongoose.model('PowerUsers', userSchema);
使用Model创建Entity
var johndoe = new PUser ({
name: { first: 'John', last: ' Doe ' },
age: 25
});
保存Entity到数据库
johndoe.save(function (err) {if (err) console.log ('Error on save!')});
项目:
http://www.cnblogs.com/ycm119/p/3731945.html
http://www.cnblogs.com/hubwiz/p/4091971.html
http://www.cnblogs.com/moyiqing/p/mongoose.html
http://www.cnblogs.com/edwardstudy/p/4092317.html
mongoose 只是mongodb的客户端,要连上mongodb还是必须手动启动mongodb的服务器端。
- 启动mongodb的客户端:
方式一:
var dbURI = 'mongodb://localhost:27018/mydatabase';
mongoose.connect(dbURI);
方式二:
var dbURI = 'mongodb://localhost:27018/mydatabase';
var adminConnection = mongoose.createConnection(dbURI);
- 创建数据模型:
//获取Schema类
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
//创建Schema实例对象
var nodeSchema = new Schema({
name: String,
age: Number
});
//实例化 model
mongoose.model('Node', nodeSchema);
//创建实体
var node = new Node({name: 'Edward', age: '23'});
node.save(function(err){
if(err){
console.log(err);
}else{
console.log('The new node is saved');
}
});