Mongoose初体验

来源:互联网 发布:感情洁癖 知乎 编辑:程序博客网 时间:2024/06/14 06:44

什么是Mongoose?

    Mongoose是MongoDB的一个对象模型工具,是基于node-mongodb-native开发的MongoDB nodejs驱动,可以在异步的环境下执行。同时它也是针对MongoDB操作的一个对象模型库,封装了MongoDB对文档的的一些增删改查等常用方法,让NodeJS操作Mongodb数据库变得更加灵活简单。

使用步骤:

     1、引入Mongoose模块
     2、创建Schema模型

         Schema:一种以文件形式存储的数据库模型骨架,无法直接通往数据库端,也就是说它不具备对数据库的操作能力.可以说是数据属性模型(传统意义的表结构),又或着是“集合”的模型骨架。Schema是以key-value形式Json格式的数据,如下:

var UserSchema = new Schema({    name: {        type: String,        unique: true //用户名name字段唯一    },    password: {type: String}});

    schemas中的数据类型有以下几种:
        String :字符串类型
        Number :数字类型
        Date :    日期类型
        Boolean :boolean类型
        Buffer :NodeJS buffer类型
        ObjectId :主键,一种特殊而且非常重要的类型
        Mixed : 混合类型
        Array: 集合类型
     3、创建Model
        Model:由Schema构造生成的模型,除了Schema定义的数据库骨架以外,还具有数据库操作的行为,类似于管理数据库属性、行为的类。
     4、使用Model进行数据操作
          可以使用Model对数据库进行增删改查的操作。

案例:

    我们根据上面的步骤熟悉一下mongoose的使用流程:使用微信小程序作为前端,实现注册和登录的功能,其中注册的用户信息利用mongoose存储到MongoDB中。这里只是简单的涉及到Mongoose的插入与查询功能,当然关于Mongoose的操作不是本篇博文的重点内容,在后续的博客中会详细介绍Mongoose的操作。为了让读者更容易理解,我先贴出来微信小程序效果图:
                                       
下面是Node.js工程文件目录结构:
                                  
1、引入mongoose模块:
/*** Created by lzy on 2017/1/13.*/var mongoose = require('mongoose'),    DB_URL = 'mongodb://localhost:27017/wxDB';/*** 连接数据库,默认mongodb连接不需要密码*/mongoose.connect(DB_URL);
  当然为了方便使用,我们可以监听数据库连接、断开等行为的监听,OK,下面我们完善一下,并把完善后的文件命名为db.js:
/*** Created by lzy on 2017/1/13.*/var mongoose = require('mongoose'),    DB_URL = 'mongodb://localhost:27017/wxDB';/*** 连接数据库,默认mongodb连接不需要密码*/mongoose.connect(DB_URL);/*** 数据库连接成功*/mongoose.connection.on('connected', function () {    console.error('数据库连接成功:' + DB_URL);});/*** 数据库连接异常*/mongoose.connection.on('error', function (err) {    console.error('数据库连接异常: ' + err);});/*** 数据库连接断开*/mongoose.connection.on('disconnected', function () {    console.error('数据库连接断开' + DB_URL);});module.exports = mongoose;
2、创建Schema模型
var mongoose = require('../config/db'),    Schema = mongoose.Schema;var base = require('./Base');var ObjectId = base.ObjectId;//主键var UserSchema = new Schema({    name: {        type: String,        unique: true //用户名name字段唯一    },    password: {type: String}});
 上面代码中引用了Base.js,该文件主要对Mongoose中常用字段进行了封装,该文件代码如下:
/*** Created by lzy on 2017/1/13.*/var mongoose = require('../config/db');//引入config中的mongodb对象var Schema = mongoose.Schema;//获取Schema,以便快捷使用var ObjectId = Schema.Types.ObjectId;//获取ObjectId类型,以便快捷使用exports.mongoose = mongoose; //导出mongooseexports.Schema = Schema;//导出Schemaexports.ObjectId = ObjectId;//导出ObjectIdexports.Mixed = Schema.Types.Mixed;//导出Mixed
   3、创建Model
/*** 用户信息*/var mongoose = require('../config/db'),    Schema = mongoose.Schema;var base = require('./Base');var ObjectId = base.ObjectId;//主键var UserSchema = new Schema({    name: {        type: String,        unique: true //用户名name字段唯一    },    password: {type: String}});var userModel = base.mongoose.model('user', UserSchema);module.exports.userMode = userModel;
4、使用Model进行数据操作
      插入数据到数据库:拿注册成功的例子来说,下面是代码:
userMode.create({name: userInfo.name, password: userInfo.password}, function (error, doc) {    if (error) {        postResult.code = result.SERVER_EXCEPTION_ERROR_CODE;        postResult.reason = "服务器异常!";        postResult.data = {};    } else {        postResult.code = result.NO_ERROR;        postResult.reason = '';        postResult.data = {tip: '注册成功'};    }
接下来我们打开数据库看一下上述的操作是否已经插入到了数据库中。如下图:


 结语:

这篇博客主要目的是熟悉mongoose的使用流程,并明白Schema与Model的概念即可。
    1. Schema:数据库集合的模型骨架,或者是数据属性模型传统意义的表结构。
    2. Model :通过Schema构造而成,除了具有Schema定义的数据库骨架以外,还可以具体的操作数据库如增删改查操作。

0 0
原创粉丝点击