zoukankan      html  css  js  c++  java
  • Node+TS+Koa+vue 商城全栈(九)引入 koa-bodyparser 并 实现添加分类

    1.安装模块

    yarn add koa-bodyparser
    yarn add @types/koa-bodyparser -D

    2.入口文件引入

    app/index.ts

    // import Koa from 'koa'; // 错误的写法
    // import Koa = require('koa');
    import * as Koa from 'koa';
    import { useControllers } from 'koa-controllers';
    import * as KoaBodyParser from 'koa-bodyparser';
    import db from './models';
    
    let app = new Koa();
    
    // 中间件
    app.use(async (ctx: Koa.Context, next) => {
      // 把db对象等其他一些数据挂在到当前的state下面
      ctx.state.db = db;
    
      await next();
    });
    
    app.use(KoaBodyParser());
    
    useControllers(app, __dirname + '/controllers/**/*.controller.js', {
      multipart: {
        dest: './uploads'
      }
    })
    
    app.listen(8000);

    3.添加分类

    app/controllers/admin/category.controller.ts

    /**
     * 分类 控制器
     */
    import { Controller, Get, Ctx, Post } from 'koa-controllers';
    import { Context } from 'koa';
    import { Model } from 'sequelize';
    
    @Controller
    export class AdminCategoryController {
    
      /**
       * 获取分类信息列表
       * localhost:8000/admin/category
       */
      @Get('/admin/category')
      public async index(@Ctx ctx: Context) {
        /**
         * 方式一
         */
        // let categoryModel = <Model<any, any>>ctx.state.db['category'];
        /**
         * 方式二:类型断言
         */
        let categoryModel: Model<any, any> = ctx.state.db['category'];
    
        // 查询所有的分类信息
        let categories = await categoryModel.findAll();
    
        ctx.body = categories;
      }
    
      /**
       * 新增分类
       * localhost:8000/admin/category/add
       */
      @Post('/admin/category/add')
      public async add(@Ctx ctx: Context) {
        // console.log(ctx.request.body);
        let pid = (<any>ctx.request.body).pid || 0;
        let name = (<any>ctx.request.body).name || '';
    
        if (name == '') {
          ctx.body = {
            code: 1,
            message: '分类名称不能为空'
          }
          return;
        }
    
        let categoryModel: Model<any, any> = ctx.state.db['category'];
        let category = categoryModel.build({
          name,
          pid
        });
    
        await category.save();
    
        ctx.body = {
          code: 0,
          data: category
        }
      }
    }
    

    .

  • 相关阅读:
    POJ2594拐点弯的二分
    poj1523赤裸裸的割点
    POJ2239二分匹配
    对java多线程的一些浅浅的理解
    POJ3216 最小路径覆盖
    POJ1719二分匹配
    [算法]本学期算法作业
    [离散数学II]2017.3.29
    [离散数学II]2017.3.29
    [概率论]2017.3.29
  • 原文地址:https://www.cnblogs.com/crazycode2/p/12253776.html
Copyright © 2011-2022 走看看