• 全栈项目|小书架|服务器端-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
    })
    

    以上就是本次的介绍。


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

    在这里插入图片描述

  • 相关阅读:
    spring-boot 速成(6) 整合disconf
    spring-boot 速成(5) profile区分环境
    dubbox REST服务使用fastjson替换jackson
    resteasy经验谈
    spring-boot 速成(4) 自定义配置
    spring-boot 速成(3) actuator
    idea 高级调试技巧
    spring-boot 速成(2) devtools之热部署及LiveReload
    bash编程之xargs实用技巧
    spring-boot 速成(1) helloworld
  • 原文地址:https://www.cnblogs.com/gdragon/p/11965169.html
Copyright © 2020-2023  润新知