[Node]node.js全栈入门[下]-做一个任务管理项目

背景

补充学习下node知识,课程来自imooc
从node基础到web相关的基础知识,到最后任务管理系统实战。
技术栈:react+redux+mysql+express
个人学习笔记,如有侵权,会删除。
2022.1.19
发现黑马的nodejs讲的特别好,大家可以直接B站搜索学习

笔记

需求分析

  1. 根据客户端传递过来的不同参数(状态,页码)查询,任务列表
  2. 新增一个任务的功能(名称/截止日期/内容)
  3. 实现一个编辑功能:根据客户端 传递的任务对象,进行编辑(名称/截止日期/内容)
  4. 删除 (ID)
  5. 修改任务状态(ID/状态–待办/完成)

数据库的初始化

  1. 创建todo
  2. 使用sequelize cli初始化项目的数据库配置信息,修改数据库名称和密码(config/config.json)
    npx sequelize init
    与数据库连接
    在这里插入图片描述
  3. 生成模型文件
    1. migrate文件
    2. model文件,创建数据库,并赋予属性
      npx sequelize model:generate --name Todo --attributes name:string,deadline:date,content:string
  4. 持久化,模型对应的数据库表(填充mysql里面的表的属性)
    npx sequelize db:migrate

具体代码

  1. 目录
    在这里插入图片描述
    在这里插入图片描述

  2. 代码

const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const models = require(`../db/models`);
const { sequelize } = require('../db/models');
//1. 所有的错误,http statue=500
//查询任务列表
// {
//     [models: Todo],
//         sequelize,
//         sequelize
// }
app.use(express.json());
app.use(express.urlencoded());
app.use(bodyParser.urlencoded({ extended: true }));
//查询
app.get('/list/:status/:page', async (req, res, next) => {
    //1. 状态 1:表示待办 2:完成 3:删除, -1:全部
    //2. 分页的处理
    let { status, page } = req.params;
    console.log(status, page);
    let limit = 10;
    let offset = (page - 1) * limit;
    let where = {};
    if (status != -1) {
        where.status = status;
    }
    let list = await models.Todo.findAndCountAll({
        // where: {
        //     status
        // },
        where,
        offset,
        limit
    })
    res.json({
        list,
        message: '列表查询成功'
    })
})
//创建一个todo
app.post('/create', async (req, res, next) => {
    try {
        let { id, name, deadline, content, status } = req.body;
        //数据持久化到数据库
        let todo = await models.Todo.create({
            id,
            name,
            deadline,
            content,
            status
        })
        res.json({
            id,
            name,
            deadline,
            content,
            status
        })
    } catch (error) {
        next(error)
    }
})
//修改一个todo
app.post('/update', async (req, res, next) => {
    try {
        let { name, deadline, content, id, status } = req.body;
        let todo = await models.Todo.findOne({
            where: {
                id
            }
        })
        if (todo) {
            todo = await todo.update({
                name,
                deadline,
                content,
                status
            })
        }
        res.json({
            todo
        })
    } catch (error) {
        next(error)
    }
})
//修改一个todo,删除
app.post('/update_status', async (req, res, next) => {
    try {
        let { id, status } = req.body;
        let todo = await models.Todo.findOne({
            where: {
                id
            }
        })
        if (todo && status != todo.status) {
            todo = await todo.update({
                status
            })
        }
        res.json({
            todo
        })
    } catch (error) {
        next(error)
    }
})
app.use((err, req, res, next) => {
    if (err) {
        res.status(500).json({
            message: err.message
        })
    }
})
app.listen(3001, () => {
    console.log("服务启动成功")
})
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值