全栈项目|小书架|服务器端-NodeJS+Koa2实现首页图书列表接口

通过上篇文章 全栈项目|小书架|微信小程序-首页水平轮播实现 我们实现了前端(小程序)效果图的展示,这篇文章来介绍服务器端的实现。

首页书籍信息

先来回顾一下首页书籍都有哪些信息:

从下面的图片可以看出目前一本图书信息主要有:

  • 图片字段
  • 名称字段
  • 作者字段
  • 出版社字段

除了以上前端页面中可见的信息外,在服务器开发中还需要给每一条记录(数据)都加上下面的几个字段:

  • 创建时间字段
  • 更新时间字段
  • 删除时间字段

最后完成的数据库表如下:
ps:由于数据库是直接导入的,之前的数据库是没有时间字段的,所以前面字段为null

书籍实体对象创建

根据上面的分析,我们知道一本图书实体需要哪些字段去表示,那么在NodeJS中如何根据数据模型创建对应的数据表格呢。下面的数据模型model主要参考了 这个文件

ps: 所有字段前面加了bk,这是原有数据库直接导入没有做修改。去掉bk后字段会更容易理解一下。

Book.init({
// 图书 id,主键
    bkid: {
        type: Sequelize.INTEGER,
        primaryKey: true
    },
    // 图书类型
    bkclass: Sequelize.INTEGER,
    // 图书作者
    bkauthor:  Sequelize.STRING,
     // 图书名称
    bkname: Sequelize.STRING,
     // 图书出版社
    bkpublisher: Sequelize.STRING,
     // 图书文件下载地址
    bkfile: Sequelize.STRING,
     // 图书封面图
    bkcover: Sequelize.STRING,
     // 图书价格
    bkprice: Sequelize.INTEGER,
     // 图书喜欢数量
    like_count:{
        type: Sequelize.INTEGER,
        defaultValue: 0
    }

}, {
    sequelize,
    tableName: 'books'
})

module.exports = {
    Book
}

获取书籍列表接口

定义好数据模型之后,运行项目就会在数据库中创建相应的表格。

这里会创建books表格,在books表中填写默认的一些测试数据之后,就可以通过查询数据库的方式将数据查询到,然后将结果通过json格式返回给客户端显示。

那么首先肯定是数据的查询:

这里没做数据为空及分页的判断,理论上查询到的books为空或者不存在,需要返回相应的提示信息。

 // 获取所有书籍
    static async getAllBooks(){
        const books =await Book.findAll({
            order:[
                'bkid'
            ]
        })
        return books
    }

通过以上的代码可以查询到数据库中books表存在的数据,那么下一步就是调用这个数据查询将结果返回。

// 路由前缀,访问接口: http://ip:端口号/v1/book/all
const router = new Router({
    prefix: '/v1/book'
})

// 获取所有书籍列表
router.get('/all', async (ctx, next) => {
    const books = await Book.getAllBooks()
    ctx.body = books
})

以上就是本次的介绍。


扫码关注公众号,轻撩即可。

原文地址:https://www.cnblogs.com/gdragon/p/11965169.html

时间: 2024-08-03 06:46:38

全栈项目|小书架|服务器端-NodeJS+Koa2实现首页图书列表接口的相关文章

全栈项目|小书架|服务器端-NodeJS+Koa2 实现书籍详情接口

通过上篇文章 全栈项目|小书架|微信小程序-首页水平轮播实现 我们实现了前端(小程序)效果图的展示,这篇文章来介绍服务器端的实现. 书籍详情分析 书籍详情页面如下: 从上图可以分析出详情页面大概有以下几个接口: 获取书籍详情信息 获取用户对书籍的喜欢状态接口 喜欢/不喜欢书籍接口 获取评论列表 写评论接口 以上的接口,有的数据可以直接从已存在的数据表中去获取,比如:书籍详情信息,而其他新接口就需要创建对应的model,然后根据model创建相应的数据表. 比如 用户对书籍的喜欢操作,可以创建li

全栈项目|小书架|服务器端-NodeJS+Koa2 实现点赞功能

效果图 接口分析 通过上面的效果图可以看出,点赞入口主要是在书籍的详情页面. 而书籍详情页面,有以下几个功能是和点赞有关的: 获取点赞状态 点赞 取消点赞 所以项目中理论上与点赞相关的接口就以上三个. 点赞 model 的设计 既然明确了接口数量,那么下一步就是设计接口对应的model,通过model生成表格like,里面存放点赞数据. 那么需要存在哪些点赞数据呢? 这里简单分析后,记录一条点赞信息只需要保存以下的信息即可: 点赞 id 书籍 id 用户 id created_at delete

全栈项目|小书架|服务器开发-Koa2 全局异常处理

什么是异常 做开发的基本都知道异常,像Android开发中常见的ANR异常.空指针异常,服务器开发中经常遇到的异常404,500异常,还有一些其他常见的异常,具体可见HTTP状态码. 基本上这些异常可以总结为:已知异常和未知异常. 已知异常就是程序中能够预想到异常,比如:服务器接口开发中某个api接口需要5个参数,而用户传递的参数多余5个或者少于5个,这种错误就是已知错误. 未知异常就说程序中不能预想到的异常,比如:服务器接口开发中遇到了空指针而程序中又没有做相应处理就会抛出HTTP状态码为50

全栈项目|小书架|服务器开发-Koa2中间件机制洋葱模型了解一下

KOA2 是什么? Koa是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小.更富有表现力.更健壮的基石. 通过利用 async函数,Koa帮你丢弃回调函数,并有力地增强错误处理. Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序. 为什么产生? 笔者对这几个框架都不熟,这里就不误人子弟了.可以看看下面一些大佬的介绍. Koa是由Express的原班人马打造,那么他们为什么不将

全栈项目|小书架|服务器开发-Koa全局路由实现

什么是路由 路由就是具体的访问路径,指向特定的功能模块.一个api接口是由ip(域名)+端口号+路径组成,例如 :https://www.npmjs.com/package/koa-router就是一个路由,指向了koa-router的npm页面. 为什么需要 koa-router 路由 当然不需要koa-router也能实现路由功能,通过ctx.request.path去指定路径实现.例子如下: const koa = require('koa2') const app = new koa()

全栈项目|小书架|小程序端-评论功能实现

效果图 发布评论 发布评论的入口在图书详情页面,点击 写评论 按钮之后跳转到发布评论页面. wxml布局比较简单了,目前还没有添加图片评论功能,也没有子评论功能,所以伪代码就比较简单了: <view class="comment-container"> <!-- book name --> <view class="book-name"> <text>{{bookInfo.name}}</text> <

基于NodeJS的全栈式开发(基于NodeJS的前后端分离)

也谈基于NodeJS的全栈式开发(基于NodeJS的前后端分离) 前言 为了解决传统Web开发模式带来的各种问题,我们进行了许多尝试,但由于前/后端的物理鸿沟,尝试的方案都大同小异.痛定思痛,今天我们重新思考了“前后端”的定义,引入前端同学都熟悉的NodeJS,试图探索一条全新的前后端分离模式. 随着不同终端(Pad/Mobile/PC)的兴起,对开发人员的要求越来越高,纯浏览器端的响应式已经不能满足用户体验的高要求,我们往往需要针对不同的终端开发定制的版本.为了提升开发效率,前后端分离的需求越

《从零开始做一个MEAN全栈项目》(1)

欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 在本系列的开篇,我打算讲一下全栈项目开发的优势,以及MEAN项目各个模块的概览. 为什么选择全栈开发?     对于初学者来说,学习一门新的语言和技术的体验总是让人愉快的,也会满足于掌握了一些新的东西并且解决了一些实际问题.在一个小组中采用全栈开发时,你可以更加有效地把握项目全局概念,这也有利于让你了解项目中的不同模块以及它们之间是如何协同工作的.你会对你们的产品中他人的贡献更加清晰,你也就了解了这款产品如何

《从零开始做一个MEAN全栈项目》(2)

欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习.   上一节简单介绍了什么是MEAN全栈项目,这一节将简要介绍三个内容:(1)一个通用的MEAN项目的技术架构,(2)为什么我们要打造单页应用,(3)本系列项目的技术架构和开发计划.希望通过这三个问题,我们能够对本项目产生一个全局视角. 实现一个常见的MEAN全栈项目的核心就是RESTful API.这个接口通常是用MongoDB, Express, Node.js实现的,而单页应用(SPA)由AngularJ