express使用MongoDB数据库

一、在项目中添加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;
//创建Schema
var 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还是money
var 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;
  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值