前端必备之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. 安装LNMP笔记

    安装好centos7,主机ssl连不上 网卡设置为桥接模式或NAT模式 防火墙的原因 首先telnet本机22口 先更新yum源 yum update -y 安装网络常用工具:telnet trace ...

  2. 为基于OpenCV的图像处理程序编写界面—关于QT\MFC\CSharp的选择以及GOCW的介绍

            基于OpenCV编写图像处理项目,除了算法以外,比较重要一个问题就是界面设计问题.对于c++语系的程序员来说,一般来说有QT/MFC两种考虑.QT的确功能强大,特别是QML编写andr ...

  3. django url 反响解析,视图

    1. 内容回顾 1. 模板语言(字符串替换) 1. 母版和继承 1. 什么时候用母版? html页面有重复的代码,把它们提取出来放到一个单独的html文件. (比如:导航条和左侧菜单) 2. 子页面如 ...

  4. JS(JavaScript)的进一步了解7(更新中···)

    1.Js操作css样式 div.style.width=”100px”.在div标签内我们添加了一个style属性,并设定 了width值.这种写法会给标签带来大量的style属性,跟实际项目是不符. ...

  5. MyBatis进阶(四)

    mapper.xml文件的编写 mapper.xml映射文件实现数据库和实体类之间的映射关系,定义操作数据库的sql语句. 主体部分 文件头部 <?xml version="1.0&q ...

  6. three.js初探,立体几何入手(一)

    前言:首先先推荐一篇博客,关于webgl原理,讲的非常之通俗易懂了 图解WebGL&Three.js工作原理  webGL可以理解为openGL ES2.0 (webGL2.0 - openG ...

  7. SSH应用实战——安全防护(fail2ban)

    ssh 安全配置 端口 ssh随机端口范围在 27000-30000,可以手动修改也要改在这个范围内,建议定时修改端口. 密码 登陆密码应包含大小写.数字.特殊字符等 10 位以上,建议定期修改密码. ...

  8. nrf52832板子焊接后总结的经验

    将之前打的nrf52832的板子拿到手了,经过一番焊接和调试后,发现了一些问题,因为是第一次画板焊接调试,很多地方做的不好,现在将自己的一些经验总结如下: 1 在制板之前,丝印层有必要好好的检查,建议 ...

  9. qtpy.PythonQtError: No Qt bindings could be found

     vnpy框架下No Qt bindings could be found  在 pycharm 里面出现  qtpy.PythonQtError: No Qt bindings could be f ...

  10. MySQL存储过程 CASE语句

    MySQL存储过程  CASE语句 除了IF语句,MySQL提供了一个替代的条件语句CASE. MySQL CASE语句使代码更加可读和高效. CASE语句有两种形式:简单的搜索CASE语句. 简单C ...