zoukankan      html  css  js  c++  java
  • egg中 controller 调用controller如何实现

    问题描述:

    controller部分有很多复用的功能,举个栗子,2个创建项目的页面,都是用同一套增删改查,只是新建的时候传的类型不一样,这时候就会出现2个一样的controller代码。只是传参不一致。

    解决方法:

    在controller里面新建一个common文件夹,

     编写common/project.js 参考官网示例,将公共代码提取进去,注意类命名

    const { Controller } = require('egg');
    class BaseController extends Controller {
      get user() {
        return this.ctx.session.user;
      }
    
      success(data) {
        this.ctx.body = {
          success: true,
          data,
        };
      }
    
      notFound(msg) {
        msg = msg || 'not found';
        this.ctx.throw(404, msg);
      }
    
      async save(busType) {
        const reqAppidRes = await         
        service.common.project.addReqAppid({
          id,
          appid: serviceRes.data.intappid,
          appidStr: serviceRes.data.appid,
          type: busType,
          createTime: ~~(Date.now() / 1000),
          });
        }
    }
    module.exports = BaseController;     

    编写业务文件夹liveSDK 、sms 内的project.js,引入公共controller,并把它作为父类,这样就可以用this.xxx获取父类中的方法。

    注意:方法名不能和父类重名,比如下面代码中的add不能叫save,否则会陷入死循环。

    'use strict';
    
    const Controller = require('../common/project');
    const BUS_TYPE = 2;
    class SDKProjectController extends Controller {/**
       * 新增项目
       */
      async add() {
        return await this.save(BUS_TYPE);
      }
    
    }
    
    module.exports = SDKProjectController;

    到这里,controller调用公共controller就完成了!

  • 相关阅读:
    [译]Vulkan教程(03)开发环境
    [译]Vulkan教程(02)概况
    [译]Vulkan教程(01)入门
    CSharpGL(57)[译]Vulkan清空屏幕
    CSharpGL(56)[译]Vulkan入门
    CSharpGL(55)我是这样理解PBR的
    CSharpGL(54)用基于图像的光照(IBL)来计算PBR的Specular部分
    [译]背景:着色的物理和数学(4)
    [译]背景:着色的物理和数学(3)
    [译]背景:着色的物理和数学(2)
  • 原文地址:https://www.cnblogs.com/wuyuchao/p/13741563.html
Copyright © 2011-2022 走看看