重温sql,yog不好用用了微软的sql 有些问题
增加语句 insert into 表明 (属性名1,2) values ('对应的两个选项1,2')
update 更新
update 表明 set password='11111' ,status=1 where id=2
delete删除
delete from tables where id=2
导入sql模块测试工作
const { createPool } = require('mysql')
const db = createPool ({
host : '127.0.0.1',
user : 'sa',
password : '123456',
database : 'my_db_01'
})
//测试是否连接
db.query('select 1',(err,res)=>{
if(err) return console.log(err.message)
console.log('成功'+res)
})
查询的select返回的是数组
const sqlStr = 'select * from my_db_01'
db.query(sqlStr,(err,res)=>{
if(err) return console.log('错了'+err.message)
console.log(res)
})
插入
const user = {username:'spiadr',password:'1234'}
//定义sql语句
const sqlStr = 'insert into tables (username,password) values (?,?)'
//执行sql语句
db.query(sqlStr,[user.username,user.password],(err,res)=>{
if(err) return console.log(err.message)
//通过affectedRows属性判断插入数据是否成功
if(res.affectedRows === 1) {
console.log('插入成功')
}
})
简便插入数据
const user = {username:'spiadr',password:'123445'}
//定义待执行的sql语句
const sqlStr = 'insert into user set ?'
db.query(sqlStr,user,(err,res)=>{
if(err) return console.log(err.message)
if(res.affectedRows===1){
console.log('成功了')
}
})
更新用户信息
//演示如何更新用户信息
const user = {id:6,username:'sp11',password:'123445'}
//定义sql语句
const sqlStr = 'update users set usename=?,password=? where id=?'
//执行sql语句
db.query(sqlStr,[user.usernamem,user.id,user.password],(err,res)=>{
if(err) return console.log(err.message)
if(res.affectedRows===1){
console.log('成功了')
}
})
简单更新用户信息
const user = {id:6, username:'sp11',password:'00000000'}
//定义SQL语句
const sqlStr = 'update users set ? where id = ?'
db.sqlStr(sqlStr,[user,user.id],(err,res)=>{
if(err) return console.log(err.message)
if(res.affectedRows===1){
console.log('成功了')}
})
删除数据方式,优选id删除
const sqlStr = 'delete from users where id=?'
db.query(sqlStr,7,(err,res)=>{
if(err) return console.log(err.message)
if(res.affectedRows===1){
console.log('成功了')}
})
标记删除,建议不用del语句,都用update设置状态字段标记是否删除
const sqlStr = 'update tables set stauts = ? where id = ?'
db.query(sqlStr,[1,6],(err,res)=>{
if(err) return console.log(err.message)
if(res.affectedRows===1){
console.log('成功了')}
})
session中间件的写法,主要是session认证
const express = require('express')
const app = express()
//配置中间件
const session = require('express-session')
app.use(
session({
secret:'itheima', //属性值可以是任意
resave : false, //固定写法
saveUninitialized : true, //固定写法
})
)
完整的服务端渲染界面代码
后台登录(index)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>后台主页</title>
<script src="./jquery.js"></script>
</head>
<body>
<h1>首页</h1>
<button id="btnLogout">退出登录</button>
<script>
$(function () {
// 页面加载完成后,自动发起请求,获取用户姓名
$.get('/api/username', function (res) {
// status 为 0 表示获取用户名称成功;否则表示获取用户名称失败!
if (res.status !== 0) {
alert('您尚未登录,请登录后再执行此操作!')
location.href = './login.html'
} else {
alert('欢迎您:' + res.username)
}
})
// 点击按钮退出登录
$('#btnLogout').on('click', function () {
// 发起 POST 请求,退出登录
$.post('/api/logout', function (res) {
if (res.status === 0) {
// 如果 status 为 0,则表示退出成功,重新跳转到登录页面
location.href = './login.html'
}
})
})
})
</script>
</body>
</html>
登录界面(login)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>登录页面</title>
<script src="./jquery.js"></script>
</head>
<body>
<!-- 登录表单 -->
<form id="form1">
<div>账号:<input type="text" name="username" autocomplete="off" /></div>
<div>密码:<input type="password" name="password" /></div>
<button>登录</button>
</form>
<script>
$(function () {
// 监听表单的提交事件
$('#form1').on('submit', function (e) {
// 阻止默认提交行为
e.preventDefault()
// 发起 POST 登录请求
$.post('/api/login', $(this).serialize(), function (res) {
// status 为 0 表示登录成功;否则表示登录失败!
if (res.status === 0) {
location.href = './index.html'
} else {
alert('登录失败!')
}
})
})
})
</script>
</body>
</html>
中间组件
// 导入 express 模块
const express = require('express')
// 创建 express 的服务器实例
const app = express()
// TODO_01:请配置 Session 中间件
const session = require('express-session')
app.use(
session({
secret: 'itheima',
resave: false,
saveUninitialized: true,
})
)
// 托管静态页面
app.use(express.static('./pages'))
// 解析 POST 提交过来的表单数据
app.use(express.urlencoded({ extended: false }))
// 登录的 API 接口
app.post('/api/login', (req, res) => {
// 判断用户提交的登录信息是否正确
if (req.body.username !== 'admin' || req.body.password !== '000000') {
return res.send({ status: 1, msg: '登录失败' })
}
// TODO_02:请将登录成功后的用户信息,保存到 Session 中
// 注意:只有成功配置了 express-session 这个中间件之后,才能够通过 req 点出来 session 这个属性
req.session.user = req.body // 用户的信息
req.session.islogin = true // 用户的登录状态
res.send({ status: 0, msg: '登录成功' })
})
// 获取用户姓名的接口
app.get('/api/username', (req, res) => {
// TODO_03:请从 Session 中获取用户的名称,响应给客户端
if (!req.session.islogin) {
return res.send({ status: 1, msg: 'fail' })
}
res.send({
status: 0,
msg: 'success',
username: req.session.user.username,
})
})
// 退出登录的接口
app.post('/api/logout', (req, res) => {
// TODO_04:清空 Session 信息
req.session.destroy()
res.send({
status: 0,
msg: '退出登录成功',
})
})
// 调用 app.listen 方法,指定端口号并启动web服务器
app.listen(8080, function () {
console.log('Express server running at http://127.0.0.1:8080')
})