前端必备之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 : ,
host : 'localhost',
user : 'root',
password : '',
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>此时看到控制台

   简单小接口完成!

以上。

前端必备之Node+mysql+ejs模版如何写接口的更多相关文章

  1. node+pm2+express+mysql+sequelize来搭建网站和写接口

    前面的话:在这里已经提到了安装node的方法,node是自带npm的.我在技术中会用es6去编写,然后下面会分别介绍node.pm2.express.mysql.sequelize.有少部分是摘抄大佬 ...

  2. webpack入门--前端必备

    webpack入门--前端必备 什么是 webpack? webpack是一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX).coffee.样式(含less/sass).图片等都作为模块来 ...

  3. node+mysql 数据库连接池

    1. 什么是数据库连接池? 数据库连接池是程序启动时建立足够的数据库连接,并将这些连接组成一个池,由程序动态地对池中的连接进行申请,使用和释放. 2. 使用数据库连接池原理及优点是什么? 数据库连接池 ...

  4. node与mysql的相互使用————node+mysql

    node与mysql的相互使用----node+mysql 为什么选node???因为我是个前端. 为什么选mysql???因为成熟,稳定,听说容易学. 一.mysql数据库: mysql下载和使用我 ...

  5. Web 前端必备的各种跨域方式汇总

    Web 前端必备的各种跨域方式汇总 跨域方式汇总 同源策略 协议相同 + 域名相同 + 端口相同 https://www.xgqfrms.xyz/index.html https://www.xgqf ...

  6. Angularjs+node+Mysql实现地图上特定点的定位以及附加信息展示

    注:本博文为博主原创,转载请注明出处. 在上一篇博文中主要讲述了如何利用AngularJs+Node+MySql构建项目,并实现地图上的多点标注,今天在这篇文章中,我们将在上一个项目的基础上,实现特定 ...

  7. 前端必备:FastStoneCapture 和 Licecap

    前端必备:FastStoneCapture 和 Licecap FastStoneCapture这个软件非常小,只有2M多,并且其功能很强大,包括截图,录制视频,量尺,取色等等,对于前端工程师绝对是必 ...

  8. Sublime编辑器 前端 必备插件

    sublime编辑器前端必备插件 下面这一行是Package Control包安装,它是sublime的插件包管理器.新安装的sublime 里没有Package Control,按一下ctrl+~, ...

  9. node+mysql,实现基本的增删改查,附带跟踪记录和运行时间记录

    Node + mysql 实现基础的增删改查,以及性能测试. 网上有很多这样的例子,我也是找来学习的. 感觉node对mysql的操作非常简单,也很实用,比如自带防止sql注入的功能,一开始还担心注入 ...

随机推荐

  1. 清除Windows 10的文件夹浏览痕迹

    windows 10有一个功能就是在快速访问时显示“最近访问的文件”,“常用文件”.如果是一台共用电脑,这个功能会经常暴露自己的“行踪”. 可以在“文件夹选项”-“隐私”中去掉勾选,并点击“清除”来清 ...

  2. 最短路径 SPFA P3371 【模板】单源最短路径(弱化版)

    P3371 [模板]单源最短路径(弱化版) SPFA算法: SPFA 算法是 Bellman-Ford算法 的队列优化算法的别称,通常用于求含负权边的单源最短路径,以及判负权环.SPFA 最坏情况下复 ...

  3. clean exit - waiting for changes before restart

    在使用nodemon的时候,针对于同一个文件一次使用还好,当多次使用的时候就会出现这样的情况: 解决办法: nodemon clean exit 原因: 可能是因为缓存造成的:

  4. TeamCity 创建jar构建步骤

    1 创建工程 2 配置工程代码来源信息 2.1 From a repository URL 表示从代码仓库创建工程. 2.1.1 parent project 指定父工程,默认是root projec ...

  5. centos 增强功能安装失败

    centos 共享目录设置失败 /sbin/mount.vboxsf: mounting failed with the error: No such device 准备安装增强功能 [root@lo ...

  6. Pandas截取列部分字符,并据此修改另一列的数据

    #截取'股票代码'第一个字符 df['首字符'] = df['股票代码'].str[0:1] ' # 根据'首字符'列的值,修改'市场'的值. 1表示上海 截取字符串的部分字符: date=today ...

  7. 【题解】Luogu CF817F MEX Queries

    原题传送门 817,我突然想到了某8位质数 这题珂以说是珂朵莉树的模板 三个操作都肥肠简单,前两个区间赋值,第三个区间0变1,1变0 每次输出从头开始扫描就行(我忘了珂朵莉树的性质,竟然还动态维护最左 ...

  8. bzoj2194 快速傅立叶之二 ntt

    bzoj2194 快速傅立叶之二 链接 bzoj 思路 对我这种和式不强的人,直接转二维看. 发现对\(C_k\)贡献的数对(i,j),都是右斜对角线. 既然贡献是对角线,我们可以利用对角线的性质了. ...

  9. Groovy 语法学习

    一.配置 Groovy 环境: 下载 Groovy(Groovy 依赖 Java,所以需要 JDK 环境):http://www.groovy-lang.org/download.html 配置环境变 ...

  10. Linux(例如CentOS 7)打开TCP 22端口,基于SSH协议

    SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定:SSH 为建立在应用层和传输层基础上的安全协议.SSH 是目前较可靠,专 ...