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‘);

    }

});

 

 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。