Deno 编写高校讲座预约系统实战

阅读时长 13 分钟读完

前言

在传统的学校讲座预约系统中,往往需要繁琐的部署过程,同时也需要较长的学习曲线,并且代码维护成本高。而 Deno 这个新兴的 JavaScript 运行时,以其简单易用的特点吸引了众多前端开发者的关注。本文将详细讲述如何使用 Deno 实现一个高校讲座预约系统,并给出完整示例代码和指导意义。

前置知识

在阅读本文之前,需要了解以下相关知识:

  • TypeScript
  • Deno 基础

如果你对以上内容还不熟悉,可以先阅读相关教程进行学习。

技术栈选择

在本文中,我们选择以下技术栈来实现讲座预约系统:

  • Deno:作为后端运行时
  • Oak:提供 Web 框架功能
  • MongoDB:作为数据库存储数据
  • TypeScript:增加代码的可读性和可维护性

功能需求

在进行系统设计之前,需要先明确系统的功能需求。

  • 用户登录/注册功能
  • 发布讲座信息
  • 查看讲座列表
  • 预约讲座
  • 查看预约列表
  • 取消预约功能

系统设计

数据库设计

用户表

字段名 类型 描述
id string 用户编号
name string 用户名
passwd string 用户密码(md5 加密)

讲座表

字段名 类型 描述
id string 讲座编号
name string 讲座名称
intro string 讲座简介
startTime string 讲座开始时间
endTime string 讲座结束时间
speaker string 讲座演讲者
place string 讲座地点
maxNumber number 讲座最大预约人数
curNumber number 讲座当前预约人数

预约表

字段名 类型 描述
id string 预约编号
userId string 用户编号
lectureId string 讲座编号
createTime string 预约时间
cancelTime 取消时间(如果未取消则为空)

接口设计

本系统设计以下接口:

  • /api/signup:注册接口
  • /api/login:登录接口
  • /api/lecture/add:添加讲座接口
  • /api/lecture/list:获取讲座列表接口
  • /api/lecture/appoint:预约讲座接口
  • /api/lecture/cancel:取消预约接口
  • /api/lecture/appointed:查看预约列表接口

注册/登录接口实现

注册接口

-- -------------------- ---- -------
-------------------------- ----- ----- -- -
  ----- ---- - -------------------
  ----- ------ - ----- -----------
  ----- - ----- ------ - - -------
  -- ------ -- -------- -
    ------------------- - ------------------
    ----------------- - - ------ ----- -- ------ -- ------ --
  - ---- -
    ----- -------- - ----- ----------------- ---- ---
    -- ---------- -
      ------------------- - ------------------
      ----------------- - - ------ ----- --- ---- ----------- --
    - ---- -
      ----- ------- - - ----- ------- ----------- --
      ----- ------ - ----- ---------------------------
      ----------------- - - --- ------ --
    -
  -
---

登录接口

-- -------------------- ---- -------
------------------------- ----- ----- -- -
  ----- ---- - -------------------
  ----- ------ - ----- -----------
  ----- - ----- ------ - - -------
  -- ------ -- -------- -
    ------------------- - ------------------
    ----------------- - - ------ ----- -- ------ -- ------ --
  - ---- -
    ----- -------- - ----- ----------------- ---- ---
    -- --------- -- --------------- --- ------------ -
      ----- ----- - ---------- ------- ----------- ---
      ----------------- - - ----- --
    - ---- -
      ------------------- - ------------------
      ----------------- - - ------ -------- ---- -- ------- --
    -
  -
---

以上接口代码使用了 userDao 对象来进行数据库操作,具体实现可以参考示例代码。

添加讲座接口实现

-- -------------------- ---- -------
------------------------------- ----- ----- -- -
  ----- ---- - -------------------
  ----- ------ - ----- -----------
  ----- -
    -----
    ------
    ----------
    --------
    --------
    ------
    ----------
  - - -------
  ----- ---------- - -
    -----
    ------
    ----------
    --------
    --------
    ------
    ----------
    ---------- --
  --
  ----- ------ - ----- ---------------------------------
  ----------------- - - --- ------ --
---

获取讲座列表接口实现

-- -------------------- ---- -------
------------------------------- ----- ----- -- -
  ----- ---- - -------------------------------------------------
  ----- ---- - -------------------------------------------------
  ----- ---- - ----- - -- - -----
  ----- ------ - ---
  ----- ----- - ----- -------------------------
  ----- ----- ------------- - ----- ----------------------- -
    -----
    ------ -----
  ---
  ----- ---- - -------------- ------------ -- -- --- ------- ----- -------- ----
  ----------------- - - ------ ---- --
---

预约讲座接口实现

-- -------------------- ---- -------
----------------------------------- ----- ----- -- -
  ----- ----- - -----------------------------------------
  ----- ------ - -----------------
  -- --------- -
    ------------------- - --------------------
    ----------------- - - ------ -------------- --
    -------
  -
  ----- ---- - -------------------
  ----- ------ - ----- -----------
  ----- - -- - - -------
  ----- ----------- - ----- -------------------- -- ---
  -- -------------- -
    ------------------- - ------------------
    ----------------- - - ------ -------- --- ------- --
    -------
  -
  -- ---------------------- -- ---------------------- -
    ------------------- - ------------------
    ----------------- - - ------ -------- --- ---- ----- --
    -------
  -
  ----- --------------- - ----- -------------------- ------- ---------- -- ---
  -- ----------------- -
    ------------------- - ------------------
    ----------------- - - ------ -------- ------- --
    -------
  -
  ----- -------------
    ---------------------- -- -- - ----- - ---------- - - ---
    ---------------------- ------- ---------- --- ----------- ---------- ---
  ---
  ----------------- - - -------- ---- --
---

取消预约接口实现

-- -------------------- ---- -------
---------------------------------- ----- ----- -- -
  ----- ----- - -----------------------------------------
  ----- ------ - -----------------
  -- --------- -
    ------------------- - --------------------
    ----------------- - - ------ -------------- --
    -------
  -
  ----- ---- - -------------------
  ----- ------ - ----- -----------
  ----- - -- - - -------
  ----- --------------- - ----- -------------------- ------- ---------- -- ---
  -- ------------------ -
    ------------------- - ------------------
    ----------------- - - ------ --- ------- ------- --
    -------
  -
  ----- -------------
    ---------------------- -- -- - ----- - ---------- -- - ---
    ---------------------
      - ------- ---------- -- --
      - ----- - ----------- ---------- - -
    --
  ---
  ----------------- - - -------- ---- --
---

查看预约列表接口实现

-- -------------------- ---- -------
------------------------------------ ----- ----- -- -
  ----- ----- - -----------------------------------------
  ----- ------ - -----------------
  -- --------- -
    ------------------- - --------------------
    ----------------- - - ------ -------------- --
    -------
  -
  ----- ---- - -------------------------------------------------
  ----- ---- - -------------------------------------------------
  ----- ---- - ----- - -- - -----
  ----- ------ - - ------ --
  ----- ----- - ----- -------------------------
  ----- ----- ------------- - ----- ----------------------- -
    -----
    ------ -----
  ---
  ----- ---- - ----- ------------
    -------------- ----- ------------ -- -
      ----- ----------- - ----- -------------------- --- ------------- ---
      ------ -
        --- -------
        ------------ ------------------
        ----------------- -----------------------
        ----------- ---------------
        ----------- ---------------
      --
    --
  --
  ----------------- - - ------ ---- --
---

安装和运行

  • 安装 Deno

  • 安装依赖

总结

本文介绍了如何使用 Deno 实现了一个高校讲座预约系统,并从数据库设计和接口设计两方面给出了详细的实现方式,同时也介绍了如何使用 TypeScript 对代码进行类型约束。希望这篇文章对于想要学习 Deno 开发的开发者有所帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66440fe3d3423812e41fa22e

纠错
反馈