书写首页标语接口

17 阅读2分钟

首页标语模块

  1. bannerModel.js

    const sequelize = require("../dbConnect");
    const { DataTypes } = require("sequelize");
    
    // 定义数据模型
    module.exports = sequelize.define("banner", {
      // 配置表的列
      midImg: {
        type: DataTypes.STRING,
        allowNull: false,
      },
      bigImg:{
        type: DataTypes.STRING,
        allowNull: false,
      },
      title: {
        type: DataTypes.STRING,
        allowNull: false,
      },
      description: {
        type: DataTypes.STRING,
        allowNull: false,
      },
      
    }, {
      freezeTableName: true, // 禁止修改表名
      createdAt:false,
      updatedAt:false,
    });
    
  2. db.js

    // 该文件负责对数据库进行一个初始化操作
    const sequelize = require("./dbConnect"); // 数据库连接实例
    const adminModel = require("./model/adminModel"); // 数据模型
    const md5 = require("md5");
    const bannerModel = require("./model/bannerModel");
    
    (async function () {
      // 将数据模型和表进行同步
      await sequelize.sync({
        alter: true
      })
    
      // 同步完成之后,有一些表是需要一些初始化数据的数据
      // 需要先查询这张表有没有内容,没有内容才初始化数据
      const adminCount = await adminModel.count()
      if (!adminCount) {
        // 进入此 if,说明该表没有数据,我们进行一个初始化
        await adminModel.create({
          loginId: "admin",
          name: "超级管理员",
          loginPwd: md5("123456")
        })
        console.log("初始化管理员数据完毕");
    
      }
    
      //  banner进行初始化操作
      const bannerCount = await bannerModel.count()
      if (!bannerCount) {
        await bannerModel.bulkCreate([{
          "midImg": "/static/images/bg1_mid.jpg",
          "bigImg": "/static/images/bg1_big.jpg",
          "title": "塞尔达旷野之息",
          "description": "2017年年度游戏, 期待续作"
        },
        {
          "midImg": "/static/images/bg2_mid.jpg",
          "bigImg": "/static/images/bg2_big.jpg",
          "title": "塞尔达四英杰",
          "description": "四英杰里面你最喜欢的又是谁呢"
        },
        {
          "midImg": "/static/images/bg3_mid.jpg",
          "bigImg": "/static/images/bg3_big.jpg",
          "title": "日本街道",
          "description": "动漫中经常出现的日本农村街道,- -份独特的恬静"
        }])
        console.log("初始化首页标语数据...");
      }
    
      console.log("数据库数据已经准备完毕");
    
    })()
    
  3. /routes/banner.js

    var express = require('express');
    var router = express.Router();
    const { findBannerService,updateBannerService } = require('../service/bannerService')
    
    // 获取首页标语
    router.get('/', async function(req, res, next) {
      res.send(await findBannerService())
    });
    
    // 设置首页标语
    router.post('/', async function(req, res, next) {
      res.send(await updateBannerService(req.body))
    })
    
    module.exports = router;
    
  4. app.js

    var bannerRouter = require('./routes/banner');
    
      path:[
        {"url":'/api/admin/login',methods:['POST']},
        {"url":'/api/banner',methods:['GET']},
        {"url":'/res/captcha',methods:['GET']},
      ]
    
     app.use('/api/banner', bannerRouter);
    
  5. /service/bannerService.js

    const { findBannerDao,updateBannerDao } = require("../dao/bannerDao");
    const { handleDataPattern,formatResponse } = require("../utils/tool");
    
    module.exports.findBannerService = async function () {
      const data = handleDataPattern(await findBannerDao())
      // console.log("data>>", data);
      return formatResponse(0, "", data);
    }
    
    module.exports.updateBannerService = async function (bannerArr) {
      const data = handleDataPattern(await updateBannerDao(bannerArr))
      return formatResponse(0, "", data);
    }
    
  6. /dao/bnnerDao.js

    const bannerModel = require('./model/bannerModel')
    
    module.exports.findBannerDao = async function(){
      return await bannerModel.findAll()
    }
    
    module.exports.updateBannerDao = async function(bannerArr){
      await bannerModel.destroy({
        truncate: true // 删除表的所有数据
      })
      await bannerModel.bulkCreate(bannerArr) // 批量插入数据
      return await bannerModel.findAll()
    }
    
  7. tool.js

    // 处理数组类型的响应数据
    module.exports.handleDataPattern = function(data){
      const arr = []
      for(const i of data){
        arr.push(i.dataValues)
      }
      return arr
    }
    

image.png

image.png

image.png