egg这样定义controller是否有歧义
发布于 6 年前 作者 axetroy 3113 次浏览 来自 问答

这是官方的文档代码

// app/controller/post.js
const Controller = require('egg').Controller;
class PostController extends Controller {
  async create() {
    const { ctx, service } = this;
    const createRule = {
      title: { type: 'string' },
      content: { type: 'string' },
    };
    // 校验参数
    ctx.validate(createRule);
    // 组装参数
    const author = ctx.session.userId;
    const req = Object.assign(ctx.request.body, { author });
    // 调用 Service 进行业务处理
    const res = await service.post.create(req);
    // 设置响应内容和响应状态码
    ctx.body = { id: res.id };
    ctx.status = 201;
  }
}
module.exports = PostController;

其中 const { ctx, service } = this;

this按理来说,应该指向的是PostController,但是在实际当中,串改了执行上下文。

this指向了app, 这样是否产生歧义? 如果this被更改了,那么为什么不是暴露function,而是一个class。

回到顶部