项目的搭建步骤:

 

express的开始使用

  1. 检查是否安装脚手架:
    //安装:
    npm i -g express-generator
  2. 使用脚手架搭建一个空项目:
    express [项目名称]
  3. 项目初始化;
    //进入项目目录
    cd [项目名称]
    //安装项目依赖
    npm install
  4. 项目启动:
    npm start //其实本质启动文件就是 ./bin/www
    1. mongodb在js中使用需要通过第三方驱动mongoose来连接和操作:

      //保证mongodb的服务时开启状态
      //连接数据库
      const mongoose = require('mongoose');
      const dbname = "f67";
      mongoose.connect(
       'mongodb://localhost/' + dbname,
      { useNewUrlParser: true, useUnifiedTopology: true }
      );
      const db = mongoose.connection;
      db.on('error', console.error.bind(console, 'connection error:'));
      db.once('open', function () {
       // we're connected!
       console.log("we're connected to " + dbname);
      });
      //下面是生产model的代码:(借助于schema)
      const usersSchema = mongoose.Schema({
       username: String,
       password: String
      });
      const usersModel = mongoose.model('users', usersSchema);
      //"users"必须与数据库集合名称一致
      //查询的使用:
      usersModel.find({username:"zs"},function (err, data) {//错误优先
       if (err) return console.error(err);
       console.log(data);
      })
      //新增
      usersModel.create({username:"ww",password:"000"},function (err, data) {//错误优先
       if (err) return console.error(err);
       console.log(data);
      })
      //修改
      usersModel.updateOne({username:"ww"},{$set:{username:"zl"}},function (err, data) {//错误优先
       if (err) return console.error(err);
       console.log(data);
      });
      //删除
      usersModel.deleteOne({username:"zl"},function (err, data) {//错误优先
       if (err) return console.error(err);
       console.log(data);
      });
      1. 目录结构:

         

      2. 代码:

        //  ./routes/users.js      表现层:完成与用户端的交互,并负责简单的数据处理
        const usersService = require("../service/users");
        router.post('/login', async function (req, res, next) {
         const { username, password } = req.body;//接
         id = ~~id;//数据处理
         const data = await usersService.login({ username, password });//调用主体逻辑
         res.send(data);//发
        });
        // ./service/users.js      业务层:整个路由接口处理对应业务的主体逻辑
        const usersDao = require("../dao/users");
        const service = {}
        service.login = async ({ username, password }) => {
           const data = await usersDao.findUser({ username, password });
           let isLogin = false;
           if (data.length >= 1) {
               isLogin = true;
          }
           return { isLogin };
        }
        module.exports = service;
        //  ./dao/users.js      数据接口层:用来访问数据库,完成指定数据库操作
        const  usersModel = require("./models/usersModel");
        const dao = {}
        dao.findUser = async (condition)=>{
           return await usersModel.find(condition);
        }
        module.exports = dao;

        //下面是其他的一些附加操作(模块化):

        //   ./dao/db.js     用来链接数据库的模块
        const mongoose = require('mongoose');
        const dbname = "f67";
        mongoose.connect(
         'mongodb://localhost/' + dbname,
        { useNewUrlParser: true, useUnifiedTopology: true }
        );
        const db = mongoose.connection;
        db.on('error', console.error.bind(console, 'connection error:'));
        db.once('open', function () {
         // we're connected!
         console.log("we're connected to " + dbname);
        });

        //   ./dao/models/usersModel   与数据库对应的某一个集合的模型
        const mongoose  = require("mongoose");
        const usersSchema = mongoose.Schema({
           username: String,
           password: String
        }, { versionKey: false });
        const usersModel = mongoose.model('users', usersSchema);//users集合
        module.exports = usersModel;

      三层架构

    使用mongodb

    1. 路由的使用:(下面统一以根目录为基准)

      //./app.js
      var studentsRouter = require('./routes/students');
      app.use('/students', studentsRouter); //这是一级路由
      //./routes/students.js
      var express = require('express');
      var router = express.Router();

      router.get('/get', function(req, res, next) {//这是二级路由
       res.send('students respond with a resource');
      });

      module.exports = router;

       

    express的路由以及中间件

     

原文地址:https://www.cnblogs.com/zzr666/p/13141660.html