• 前端必备之Node+mysql+ejs模版如何写接口


    前端必备之Node+mysql+ejs模版如何写接口

    这星期公司要做一个视频的后台管理系统,

    让我用Node+mysql+ejs配合写接口,

    周末在家研究了一下,

    趁还没来具体需求把研究内容在这里分享一下。

    1、准备

      准备Node环境,mysql环境,我这里用express脚手架起了一个小项目demo

      

    2、建数据库

      我这里用了可视化工具,Navicat Premium新建了一个表cookbook,以下是我的demo数据

         

    3、mysql如何写

      1>yarn add mysql安装mysql包

      2>models文件夹中建立一个pool.js用于连接数据库

    var mysql      = require('mysql');
    var connection = mysql.createPool({
      connectionLimit : 10,
      host     : 'localhost',
      user     : 'root',
      password : '12345678',
      database : 'mysql'
    });
    
    const _delete = (sql) => {
      return new Promise((resolve, reject) => {
        connection.query(sql, (err, result) => {
          if (err) {
            reject(err.message)
          } else {
            resolve(result)
          }
        })
      })
    }
    
    const _update = (sql, values) => {
      return new Promise((resolve, reject) => {
        connection.query(sql, values, (err, result) => {
          if (err) {
            reject(err.message)
          } else {
            resolve(result)
          }
        })
      })
    }
    
    const _insert = (sql, values) => {
        return new Promise((resolve, reject) => {
            connection.query(sql, values, (err, result) => {
                if (err) {
                reject(err.message)
                } else {
                resolve(result)
                }
            })
        })
    }
    
    const _selectAll = (sql) => {
      return new Promise((resolve, reject) => {
            connection.query(sql, (err, result) => {
                if (err) {
                reject(err.message)
                } else {
                resolve(result)
                }
            })
      })
    }
    
    module.exports = {
      insert: _insert,
      select: _selectAll,
      delete: _delete,
      update: _update
    }

    4、与ejs模版的搭配

      在views文件夹中建立一个user.ejs(模版样式可以自己编写,怎么喜欢怎么来)

    {
      "ret": <%- ret %>,
      "data": <%- data %>
    }

      在routes文件夹下建立一个data.js(将从数据库获取的数据使用ejs模版返给前段)

    const express = require('express')
    const router = express.Router()
    const pool = require('../models/pool')
    
    
    router.get('/listall', async (req, res) => {
        // let result = await pool.select(`select * from cookbook where id=${req.body.id}`)
        let result = await pool.select(`select * from cookbook`)
        // res.json(result)
        res.render('user', {
            ret: true,
            data: JSON.stringify(result)
        })
    })
    
    router.get('/add', async (req, res) => {
        let result = await pool.insert('INSERT INTO cookbook (id,data) values (2,"2")')
        // res.json(result)
        res.render('user', {
            ret: true,
            data: JSON.stringify("插入成功")
        })
    })
    
    router.get('/update', async (req, res) => {
        let result = await pool.update('UPDATE cookbook SET data="已改变" WHERE id=2')
        // res.json(result)
        res.render('user', {
            ret: true,
            data: JSON.stringify("更新成功")
        })
    })
    
    module.exports = router

    5、app.js配置

      在app.js中引入路由

    var dataRouter = require("./routes/data");
    
    app.use('/data', dataRouter);

    6、测试

      1>项目跑起来yarn start

      2>打开insomnia

          

          获取数据成功

      3>此时看到控制台

              

       简单小接口完成!

    以上。

  • 相关阅读:
    N95当手柄玩游戏,甩起来还可以用手势控制电脑,分享一下我们的设计经验
    这个回答真逗
    基于事件通信的轻量级MVP框架实现,附源码
    敏捷开发读书笔记
    开发Access数据库提示的"标准表达式中数据类型不匹配",DateTime类型解决办法
    解决mysql表已满的错误
    我的OO实践由GPS消息处理抽象出一通用命令处理类
    收到开Windows 7 party的资源了【无图无真相】
    一)我要做什么,Petshop 源码分析
    天津大学免费上网,IPV4及IPV6同时共享的解决方案
  • 原文地址:https://www.cnblogs.com/yangyangxxb/p/10232172.html
Copyright © 2020-2023  润新知