egg这样定义controller是否有歧义 - CNode技术社区

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

这是官方的文档代码

// 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。

1 回复
回到顶部

AltStyle によって変換されたページ (->オリジナル) /