在nodejs环境中我们可以利用nodejs+express+mysql去创建后台环境
Nodejs: 运行在非浏览器端的JavaScript(Nodejs是运行javascript的环境)。
express: 一款基于Nodejs, 用于快速创建web服务(后台)的框架。
mysql :数据库,持久化存储数据的工具。
1.环境:Nodejs环境
(可以通过nvm 管理nodejs版本)
检查nodejs 版本 ------------> node -v
2.mysql数据库
数据库是一种让数据持久化储存的工具
通过集成环境的环境安装, 例如: phpstudy wamp 使用mysql
3.数据库可视化管理软件
下载Navicat 可以创建数据库以及数据表
以上三个步骤完成就可以开始创建web服务(搭建后台项目)
4.利用express框架快速搭建后台项目
文档地址:Express - 基于 Node.js 平台的 web 应用开发框架 - Express中文文档 | Express中文网
-----------> 安装nodemon自动执行代码 npm install -g nodemon
-----------> 全局安装express 生成器 npm install -g express -generator
--------> express 项目名
生成一个后台的项目结构
5.访问URL
6.设置模板引擎
把 jade 模板 设置成 html 模板
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
------>下载ejs npm install ejs
修改代码
//把以下代码
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
//修改成
// 视图渲染引擎
app.set('views', path.join(__dirname, 'views'));
// 配置Express 视图引擎
app.engine('html', ejs.__express);
app.set('view engine', 'html');
7.GET 请求
// 写个 GET 请求的测试方式方法
// 地址: http://localhost:3000/api/user/test
// 方式: GET (可以通过浏览器地址栏测试)
// 参数: page pageSize id
router.get('/test', async (req, res)=>{
// 接收通过GET方式提交的参数
let { page,pageSize,id } = req.query;
// 判断参数是否有值
if(page === undefined || pageSize === undefined || id === undefined) {
res.send({
code: -1,
msg: '缺少参数'
})
}else {
res.send({
code: 200,
msg: '获取参数列表成功',
page,
pageSize,
id
})
}
})
8.POST 请求
npm install body-parser
在入口文件app.js加入以下代码
var bodyParser = require('body-parser') // parse application/x-www-form-urlencoded app.use(bodyParser.urlencoded({ extended: false })) // parse application/json app.use(bodyParser.json())
// 写一个POST 请求的测试方法
// 地址: http://localhost:3000/api/user/example
// 方式: POST (不能直接通过浏览器地址栏测试,可以通过postman postcode form等)
// 参数: user_name user_pwd
router.post('/example' , async (req,res)=>{
// 接收通过POST方式提交的参数
let {user_name, user_pwd } = req.body;
if(user_name === undefined || user_pwd === undefined) {
res.send({
code: -1,
msg: '缺少参数'
})
}
else {
res.send({
code: 200,
msg: '请求成功。',
user_name
})
}
})
9.设置cors
------------>设置资源跨域共享 npm install cors
const cors = require('cors');// 做资源跨域共享 // 设置资源跨域共享 app.use(cors());
10.下载 mysql模块
-------> 下载mysql模块 npm install mysql
数据库配置
创建 ------------> database.js
创建 -----------> db.js
//创建database.js 文件
// 数据库配置文件
module.exports = {
mysql :{
host:'47.93.52.8',
//user--->填的是你数据库的user
user:'schools',
//password--->填的是你数据库的password
password:'schoolyard123456',
// 数据库的名称
database:'schools',
port:3306
}
}
//配置db.js 文件
module.exports = {
//调用query方法执行sql语句
query: function (sql) {
// 返回操作数据库的promise
return new Promise((resolve, reject) => {
// 连接数据库
pool.getConnection(function (err, connection) {
// 执行sql语句
connection.query(sql, function (err, rows) {
// 操作失败
if(err){
reject(err)
}
// 操作成功
else {
resolve(rows);
}
// 释放连接
connection.release();
})
})
})
}
}
11.常见的sql语句
查询
// 查询db_message这个表格的所有字段 // let sql = `select * from db_message`; // let sql = `select title, content from db_message`;
条件查询
查询db_message这个表格的所有字段
let sql = `select * from db_message where id='${id}'`; // let sql = `select * from db_message where id='${id}' and author= '${author}'`; let sql = `select * from db_message where id='${id}' or author= '${author}'`;
关键字查询(模糊查询)
查询db_message这个表格的所有字段
let sql = `select * from db_message where title like '%${keyword}%' or author like '%${keyword}%'`;
插入数据
// 查询db_message这个表格的所有字段
let sql = `insert into db_message(title,content,author)values('${title}','${content}','${author}')`;
删除数据
根据id 删除db_message这个表格的相应的记录
let sql = `delete from db_message`
let sql = `delete from db_message where id = '${id}'`