express使用MongoDB数据库

来源:互联网 发布:mac os x安装光盘映像 编辑:程序博客网 时间:2024/06/01 13:42

一、在项目中添加mongodb数据库
npm install –save mongoose

二、连接操作,写在你想要开始连接mongodb的地方,一般放在app.js当中。
然后我们需要搞清楚mongoose的几个概念:
Schema: 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力
Model: 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对
Entity: 由Model创建的实体,他的操作也会影响数据库
Schema、Model、Entity的关系请牢记,Schema生成Model,Model创造Entity,Model和Entity都可对数据库操作造成影响,但Model比Entity更具操作性。
根据以上几点,我们了解了一个大致的流程之后,就知道要首先创建什么,然后在创建什么。

1、创建目录与文件
这里写图片描述
config.js用来保存mongodb的连接地址:

// 数据库地址: 'mongodb://用户名:密码@ip地址:端口号/数据库';module.exports = {    mongodb : 'mongodb://cha:root@localhost:27017/ch_db'}

mongoose.js用来连接mongodb数据库并引用定义Schema和Model:

const mongoose = require('mongoose');const config = require('./config');module.exports = ()=>{    //  mongoose.Promise = global.Promise;//如果有promise的问题,可以用这个试试    mongoose.connect(config.mongodb);//连接mongodb数据库    // 实例化连接对象    var db = mongoose.connection;    db.on('error', console.error.bind(console, '连接错误:'));    db.once('open', (callback) => {        console.log('MongoDB连接成功!!');    });    return db;}

schemas.js用来定义Schema:

var mongoose = require('mongoose');var Schema = mongoose.Schema;//创建Schemavar userSchema = new Schema({    username:String,    password:String});module.exports = userSchema;

models.js用来定义Model:

var mongoose = require('mongoose');var UserSchema = require('../schemas/UserSchema');//创建model,这个地方的ch_user对应mongodb数据库中ch_users的conllection。//mongoose会自动改成复数,如模型名:xx―>xxes, kitten―>kittens, money还是moneyvar User = mongoose.model('ch_user',UserSchema);module.exports = User;

这里写图片描述

2、在app.js中添加数据库的引用
这里写图片描述

var mongoose = require('./config/mongoose.js');var db = mongoose();

3、在路由routes中使用数据库

var express = require('express');var router = express.Router();var User = require('../models/User');// 引入模型router.get('/',function(req,res,next){    res.render('login');});router.post('/submit',(req,res,next)=>{//  var user = new User({//      username:'admin',//      password:'123'//  });//  user.save((err)=>{ //添加//      console.log('save status:', err ? 'failed' : 'success');//  });//  User.find({ //查找//      username:'admin',//      password:'123'//  },(err, docs)=>{//      if(err){//          res.send('server or db error');//      }else{//          console.log('登录成功用户:'+docs);//          if(docs.length==0){//              res.send('用户名或密码有误');//          }else{//              req.session.user = {//                  _id:docs[0]._id,//                  username:docs[0].username//              };//              res.send('login success');//          }//      }//  });    User.findOne({ //查找一条        username:'admin',        password:'123'    },(err, doc)=>{        if(err){            res.send('server or db error');        }else{            console.log('登录成功用户:'+doc);            if(doc==null){                res.send('用户名或密码有误');            }else{                req.session.user = {                    _id:doc._id,                    username:doc.username                };                res.send('login success');            }        }    })});module.exports = router;
4 0
原创粉丝点击