node.js mongoose 插件

来源:互联网 发布:sql server数据类型 编辑:程序博客网 时间:2024/06/06 07:28

mongoose简介

mongoose是node.js上一个mongodb的ODM(Object Data Model)插件。MongoDB对于插入到collection的document没有限制,任何document可以存放到任意的collection中,维护collection数据结构的统一需要我们自己去做。Mongoose组件可以进行object document mapping,利用Schema定义每个collection的数据结构。也可以进行object relational mapping(ORM)为MongoDB的操作添加关系数据库的特性。

利用Schema定义collection数据结构

var mongoose=require("mongoose");var Schema=mongoose.Schema;require('mongoose-currency').loadType(mongoose);//currency类型 https://www.npmjs.com/package/mongoose-currency//输出可以控制精度,如按两位小数输出 *.price.toFixed(2)  var Currency=mongoose.Types.Currency;//设置数据类型等信息,可以进行数据校验var weapenSchema=new Schema({    name:{        type:String,        required:true,    },    label:{        type:String,        required:true    },    price:{        type:Currency,        default:""    },    description:{        type:String,        default:""    }},{    timestamps:true});var heroSchema= new Schema({    name:{        type:String,        required:true,        unique:true    },    nickname:{        type:String,        default:""    },    shengong:{        type:String,        default:""    },    description:{        type:String,        default:""    },    //在一个Schema中嵌入另一个Schema,    weapen:weapenSchema},{    //设置时间戳    timestamps:true});var Heros=mongoose.model('heros',heroSchema);module.exports=Heros;

使用mongoose插入数据

//加载模块  var mongoose=require('mongoose'),assert =require('assert');var Heros=require('./models/heros');//连接MongoDBvar  url='mongodb://localhost:27017/mongoExp';mongoose.connect(url);var db=mongoose.connection;db.on('error',console.error.bind(console,'connection error'));db.once('open',function () {    console.log("成功打开英雄谱!");    //创建新的Hero    var newHero=Heros({        name:"李寻欢",        nickname:"小李探花",        shengong:"小李飞刀",        description:"飞刀一出,例不虚发",        weapen:            {                name:"飞刀",                label:"暗器",                price:"1.5",                description:"大冶铁匠花三个时辰打好的普通飞刀"            }     });     //将新的hero存入数据库     newHero.save(function (err) {         if(err) throw err;         console.log('李寻欢录入英雄谱');         Heros.find({},function (err,heros) {            if(err) throw err;            console.log(heros);            //删除collection            db.collection('heros').drop(function (){                db.close();            });         });     });});

运行mogoose.js

node mongoose.js成功打开英雄谱!李寻欢录入英雄谱[ { nickname: '小李探花',    shengong: '小李飞刀',    description: '飞刀一出,例不虚发',    __v: 0,    weapen:      { price: 150,       description: '大冶铁匠花三个时辰打好的普通飞刀',       _id: 57139616f8cff40741e7882a,       label: '暗器',       name: '飞刀',       createdAt: Sun Apr 17 2016 21:56:38 GMT+0800 (CST),       updatedAt: Sun Apr 17 2016 21:56:38 GMT+0800 (CST) },    name: '李寻欢',    createdAt: Sun Apr 17 2016 21:56:38 GMT+0800 (CST),    updatedAt: Sun Apr 17 2016 21:56:38 GMT+0800 (CST),    _id: 57139616f8cff40741e78829 } ]
1 0
原创粉丝点击