[记录九] Vue(全家桶)+node+koa2+mysql+nginx+redis,博客全栈项目之node后台sql语句和数据库结构

导语:

暑假在家闲着无事,就琢磨着做一个web博客练练手,现在已经做完了,把过程分享出来给大家看看,分享一下学习经验。这是第九篇,开始编写后台接口,为前端接口提供提供基础,主要讲后台sql语句和数据库的结构。

微信搜索 【web小馆】,回复 ”全栈博客项目“,即可获取 项目源码和后续的实战文章教程

本文的目录

  • 一,数据库结构
    • 1,用户
    • 2,文章
    • 3,轮播图
    • 4,评论
  • 二,后台的sql执行语句
    • 1,admin.js,管理员的接口
      • (1)创建新文章
      • (2)更新文章
    • 2,article.js,用户的文章接口
      • (1)获取文章列表
      • (2)获取文章详情
      • (3)获取文章评论
      • (4)发表文章评论
      • (5)文章访问量
      • (6)文章点赞和取消
      • (6)文章收藏和取消
    • 3,baners.js,轮播图接口
      • (1)图片列表

一,数据库结构

[记录九] Vue(全家桶)+node+koa2+mysql+nginx+redis,博客全栈项目之node后台sql语句和数据库结构_第1张图片
这里我一共创建了4个表。

  1. 用户的信息,用于存放个人信息。
  2. 文章的信息,用于存放文章内容,以及它的各种信息。
  3. 轮播图图片的地址。
  4. 评论的信息,用于存放每个文章下面的用户评论。

1,用户

[记录九] Vue(全家桶)+node+koa2+mysql+nginx+redis,博客全栈项目之node后台sql语句和数据库结构_第2张图片

2,文章

[记录九] Vue(全家桶)+node+koa2+mysql+nginx+redis,博客全栈项目之node后台sql语句和数据库结构_第3张图片

3,轮播图

[记录九] Vue(全家桶)+node+koa2+mysql+nginx+redis,博客全栈项目之node后台sql语句和数据库结构_第4张图片

4,评论

[记录九] Vue(全家桶)+node+koa2+mysql+nginx+redis,博客全栈项目之node后台sql语句和数据库结构_第5张图片

二,后台的sql执行语句

[记录九] Vue(全家桶)+node+koa2+mysql+nginx+redis,博客全栈项目之node后台sql语句和数据库结构_第6张图片
创建一个文件夹,存放对应的sql语句代码。

1,admin.js,管理员的接口

(1)创建新文章

const newarticle = async (articleData = {}) => {
  // articleData 是一个文章对象,包含 title content lei 属性
  const title = xss(articleData.title)
  // console.log('title is', title)
  const content = xss(articleData.content)
  const lei = articleData.type
  const createTime = Date.now()
  const pic = articleData.pic
  const sort = articleData.sort
  const show = articleData.state

  let sql = `
      insert into article (title, content, createtime, lei, pic, sort, showdata)
      values ('${title}', '${content}', ${createTime}, '${lei}', '${pic}', '${sort}', '${show}');
  `

  let insertData = await exec(sql)

  sql = `
    insert into comments (content, articleid)values('[]', ${insertData.insertId});
  `
  insertData.comments = await exec(sql)
  
  return {
      id: insertData.insertId
  }
}

(2)更新文章


const updatearticle = async (articleData = {}) => {
  // id 就是要更新博客的 id
  // articleData 是一个博客对象,包含 title content 属性
  const id = xss(articleData.id)
  const title = xss(articleData.title)
  const content = articleData.content
  const lei = xss(articleData.type)
  const pic = xss(articleData.pic)
  const sort = xss(articleData.sort)
  const show = xss(articleData.state)
  const sql = `
      update article set title='${title}', content='${content}', lei='${lei}', pic='${pic}', sort='${sort}', showdata='${show}' where id=${id}
  `
  console.log(sql)
  const updateData = await exec(sql)
  if (updateData.affectedRows > 0) {
      return true
  }
  return false
}

2,article.js,用户的文章接口

(1)获取文章列表

const getList = async (lei, keyword, num) => {
  let mixnum = num - 10
  let sql = `select id, title, createtime, lei, pic, sort, showdata, hits, likes from article where 1=1 `
  if (lei) {
      sql += `and lei='${lei}' `
  }
  if (keyword) {
      sql += `and title like '%${keyword}%' `
  }
  sql += `order by createtime desc `
  if (num) {
    sql += `limit ${mixnum}, ${num};`
  }
  return await exec(sql)
}

(2)获取文章详情

const getDetail = async (id) => {
  const sql = `select * from article where id='${id}'`
  const rows = await exec(sql)
  return rows[0]
}

(3)获取文章评论

const getComment = async (id) => {
  const sql = `select * from comments where articleid='${id}'`
  const rows = await exec(sql)
  return rows[0]
}

(4)发表文章评论

const postComment = async (comments, id) => {
  const sql = `update comments set content='${comments}' where id=${id};`
  // console.log('sql',sql)
  const rows = await exec(sql)
  // console.log(rows)
  return rows
}

(5)文章访问量

const addHit = async (id, num) => {
  const sql = `update article set hits='${Number(num) + 1}' where id=${id};`
  // console.log('sql',sql)
  const rows = await exec(sql)
  // console.log(rows)
  return rows
}

(6)文章点赞和取消

const addGood = async (id, num) => {
  const sql = `update article set goods='${Number(num) + 1}' where id=${id};`
  console.log('sql',sql)
  const rows = await exec(sql)
  // console.log(rows)
  return rows
}


const subGood = async (id, num) => {
  const sql = `update article set goods='${num - 1}' where id=${id};`
  // console.log('sql',sql)
  const rows = await exec(sql)
  // console.log(rows)
  return rows
}

(6)文章收藏和取消

const addLike = async (id, num) => {
  const sql = `update article set likes='${Number(num) + 1}' where id=${id};`
  console.log('sql',sql)
  const rows = await exec(sql)
  // console.log(rows)
  return rows
}

const subLike = async (id, num) => {
  const sql = `update article set likes='${num - 1}' where id=${id};`
  console.log('sql',sql)
  const rows = await exec(sql)
  // console.log(rows)
  return rows
}

3,baners.js,轮播图接口

(1)图片列表

const getBanerslist = async () => {
  const sql = `select * from baners;`
  const rows = await exec(sql)
  return rows
}

在这里插入图片描述

你们的赞就是对我最大的鼓励。谢谢~

在这里插入图片描述
微信搜索【web小馆】,回复全栈博客项目,即可获取项目源码和后续的实战文章教程。每天用最简单朴实的语言,潜移默化的提升你的计算机基础知识和前端技术。小米粥,一个专注的web全栈工程师,我们下期再见!

在这里插入图片描述
node后台

你可能感兴趣的:(js,node)