• 项目的搭建步骤:


     

    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的路由以及中间件

       

  • 相关阅读:
    一道打印的面试题
    Quartz使用总结
    子类和父类之间的静态代码块、静态方法、非静态代码块、构造函数之间的执行关系
    springboot使用 @EnableScheduling、@Scheduled开启定时任务
    springboot的Interceptor、Filter、Listener及注册
    ConcurrentHashMap 的工作原理及代码实现
    为什么Hashtable ConcurrentHashmap不支持key或者value为null
    Android 通过Java代码生成创建界面。动态生成View,动态设置View属性。addRules详解
    Android 自定义title 之Action Bar
    Android常用控件之GridView与ExpandableListView的用法
  • 原文地址:https://www.cnblogs.com/zzr666/p/13141660.html
Copyright © 2020-2023  润新知