Mongoose 官网地址:http://mongoosejs.com/ ,Mongoose 为node.js提供了优雅的,针对mongodb的ODM(Object Document Mapping,本质也属于一种ORM,不过是基于MongoDB、Redis这种NoSQL的)解决方案。
下面通过实际例子进行体验,首先确保机器上安装好了MongoDB和Node.js。
通过命令行安装Mongoose
npm install mongoose
假设我们想把碰到的小猫的信息都保存到MongoDB中,第一件事先引入mongoose模块,并声明一个mongoose连接,用来连接本地的test数据库,默认端口是27017
var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/test');
现在我们有了一个未决的连接。如果我们成功连接,或者出现连接错误,我们需要得到通知:
var db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); db.once('open', function() { //一旦连接成功,将触发这个回调函数 console.log( ' connected! ') ; });
下面我们用真正的业务逻辑代码加入到上面的回调函数中
//定义一个Schema,类似于关系型数据库中的表结构//定义一个Schema,类似于关系型数据库中的表结构 varvar kittySchema = kittySchema = newnew mongoose.Schema({ name: String }); mongoose.Schema({ name: S //给 kittySchema 添加一个行为属性 kittySchema.methods.speak = function () { var greeting = this.name ? "Meow name is " + this.name : "I don't have a name"; console.log(greeting); } //将一个schema映射成一个Model类 var Kitten = mongoose.model('Kitten', kittySchema); //实例化一个Model对象 var fluffy = new Kitten({ name: 'fluffy' }); fluffy.speak(); //持久化 fluffy.save(function (err, fluffy) { if (err) return console.error(err); fluffy.speak(); });
下面再体验下查询:
//查询所有
Kitten.find(function (err, kittens) { if (err) return console.error(err); console.log(kittens); })
//条件查询 Kitten.find({ name: /^fluff/ }, function (err, kittens) { console.log(kittens[0].name) ; });