前置工作:
1.安装好MongoDB
2.express项目装上mongoose插件
3.下面例子还用到一个config-lite插件(将配置看作Object的神器)
config-lite的配置 default.js
第一个模块,关于mongoDB的操作
/** * Created by JadonYuen on 2017/5/24. * MongoDB 相关操作 */ var mongoose = require('mongoose'); //mongoose 插件 操作 mongoDB var config = require('config-lite')(__dirname); //config-list插件 操作config/default.js var connect = mongoose.createConnection(config.mongodb); //建立连接 config.mongodb对应的是 config/default.js下声明 const Schema = mongoose.Schema; //使用mongoose的Schema exports.User = connect.model('User',new Schema({ username : String, password : String }),'user'); //exports一个 UserModel // model方法 三个必备参数 关键最后的 'user' 少了,查询不到结果之余,还不报错,折腾。。。 // connect.model('为Model建立一个唯一名称',schema对象,'需要查询在mongoDB中的collectionName')
第二个模块,增加几个对 model 操作的接口,例子只展示了 查询登录接口方法
/** * Created by JadonYuen on 2017/5/24. * User collection 的操作 */ var userModel = require('../db/mongoDB').User; //引入 model module.exports = { getLoginUser : function(user,callBack) { //提供外部调用的查询接口 userModel.findOne(user,callBack); //user为一个查询的对象,callback回调函数 } //user = {username : '',password:''} };
第三个模块,相当于一个controller
/** * Created by JadonYuen on 2017/4/25. */ var express = require('express'); var router = express.Router(); var session = require('express-session'); //使用到session var user = require('../model/user'); //引用操作user router.post('/',function(req,res,next) { var name = req.body.username; var pwd = req.body.password; user.getLoginUser(req.body,function(err,doc) { //点用user接口,将request.body传入(此时的request.body = {username:'admin'}) if(!err){ if(doc){ //查询结果不为空,则查询成功 session.user = { username : name, password : pwd }; return res.send({ //返回json格式数据 status : 1, msg : '登录成功', user : session.user }); }else{ return res.send({ status : 0, msg : '登录失败' }); } } }); }); module.exports = router;
上面的例子,对于不熟悉 mongoose来说, Connection --- Schema --- Model 之间的关系必须要弄清
即先有connection,
Schema 可以看作是 一个model的结构描述
Model 可以看做是 MongoDB 的一个 collection ,所以别忘了调用时,要告知 collection的名字了