回到顶部
我的头像

RedSpite

express+mongoDB建立与前端通信的数据库

学习过程中所记录的笔记,按着步骤来可以自己搭建一个能通信的服务器,遇到不懂的地方问度娘。 在 我的码云(点击查看)我的github(点击查看)上有搭建完成后的代码,前端用的Vue框架。 不完善的地方还在修改ing~

本项目基于Vue框架 已搭建好的源码在我的码云可以查看

1.生成一个vue

    vue init webpack demoFolder
                    

2.express 框架

创建服务器文件夹 http://www.expressjs.com.cn/4x/api.html

    cnpm install express-generator  //安装express
    express server    
                    

3.安装依赖

    cd server
    cnpm install
                    

4.express安装默认是使用 jade 模板语言,修改成 html 的方法:

    安装 ejs  
    cnpm install ejs --save

    server > app.js 内引入 ejs 模块
    var ejs = require('ejs');
    
    server > app.js 内设置语言类型 
    app.engine('.html',ejs.__express);
    app.set('view engine','html');

    //新建路由
    var egs= require('path/egs');
    app.use('/egs',egs);
                    

5.pm2插件启动服务器

    cnpm install pm2 -g
    启动:pm2 start server/bin/www
    关闭:pm2 stop name(all)
                    

6.MongoDB数据库安装

    mongo 数据库安装 http://www.runoob.com/mongodb/mongodb-window-install.html
    mongoose 安装依赖 http://www.nodeclass.com/api/mongoose.html 
    cnpm install mongoose --save
                    

7.开启数据库

    mongo
                    

8.mongo数据库操作

    数据库           database
    集合             collection  表
    记录行文档       document
    域 键值对        field
    索引             index
    主键 生成 _id    primary key
                    

9.操作

    1.创建数据库并插入
        db.demo.insert({  
            "userId":101,
            "name":" jack",
            "class":{ num:30 } 
        })
    2.删除数据库
        db.dropDatabase()
    3.删除集合
        db.user.drop()
    4.查找集合  格式美化
        db.demo.find().pretty()
    5.查找第一条数据
        db.demo.findOne()
    6.查找条件
    大于
        db.demo.find({age:{$gt:20}})
    大于等于
        db.demo.find({age:{$gte:20}})
    小于
        db.demo.find({age:{$lt:20}})
    小于等于
        db.demo.find({age:{$lte:20}})
    等于
        db.demo.find({age:{$eq:20}})

    7.数据更新   显示查找条件,然后$set修改 (子文档用class.num)
        db.demo.update({“name”:"jack"},{$set:{"class.num":25}
    8.数据删除
        db.demo.remove({“name”:"zxy"})
                    

10. server > model > egs.js

    var mongoose = require('mongoose');
    var Schema = mongoose.Schema;

    //With Mongoose, everything is derived from a Schema.
    //模板定义
    var egSchema = new Schema({
    "name":String
    });
    //以下输出会自动在数据库查找 egs 数据表
    module.exports = mongoose.model('Eg',egSchema)
                    

11. server > router > egs.js

    var express = require('express');
    var router = express.Router();
    var mongoose = requier('mongoose');

    //获取到数据表egs的数据
    var Egs= require('../models/egs');

    //链接mongodb数据库
    mongoose.connect('mongodb://127.0.0.1:27017/mydemo');

    //返回数据
    router.get('/',(req,res,next)=>{
    Egs.find({},(err, doc) => {
        if (err) {  
                res.json({
                    status: 1,
                    msg: err.msg
                })
            } else {
                res.json({
                    status: 0,
                    msg: "",
                    result: {
                        count: doc.length,
                        list: doc
                    }
                })
            }
        })
    })
    module.exports = router;
                    

12.跨域

target是跨域的接口的链接地址

    //代理跨域 config > index.js
    proxyTable: {
        '/egs': {
            target: 'http://localhost:3000'
        }
    },
                

13.页面调用服务器接口 (vue中)

    axios.get('/egs',{
        param:params
    }).then(res=>{
        //获取到数据
    }).catch(err=>{
        //错误
    })
                    

2017.07.27

© RedSpite | 蜀ICP备16004270号