飞道的博客

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

464人阅读  评论(0)

导语:

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

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

一,数据库结构


这里我一共创建了4个表。

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

1,用户

2,文章

3,轮播图

4,评论

二,后台的sql执行语句


创建一个文件夹,存放对应的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全栈工程师,我们下期再见!



转载:https://blog.csdn.net/gitchatxiaomi/article/details/108308276
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场