首页 > 其他分享 >Eggjs 学习笔记 02

Eggjs 学习笔记 02

时间:2023-03-18 09:33:53浏览次数:46  
标签:02 const uid Service app ctx 笔记 Eggjs user

Service 层

如果把 Controller 层看作是与客户端交互并接收请求数据然后返回数据的作用,那么 Service 层则是处理数据、查询数据(包括数据库的查询,第三方服务的调用)、
或者是计算数据的抽象层,使得展现和逻辑分离。
定义一个 Service
位置:app/service/userservice.js

const {Service} = require('egg')

class UserService extends Service {
  async find(uid) {
    const user = await this.ctx.db.query(
      'select * from user where uid = ?',
      uid,                
    );
    return user;
  }

}

module.exports = UserService;

属性
Service 和 Controller 在属性方面相似,有如下属性

  • this.ctx 上下文对象的实例 Context
  • this.app 当前应用Application对象的实例,通过它我们可以拿到框架提供的全局对象和方法
  • this.service 应用定义的 Service,通过它我们可以访问到其他业务层,等价于 this.ctx.service
  • this.config 应用运行时的配置项
  • this.logger logger对象,上面有四个方法 (debug, info, warn, error),分别代表打印四个不同级别的日志

    使用 Service 
    // app/router.js
    module.exports = (app) => {
      app.router.get('/user/:id', app.controller.user.info);
    }
    
    // app/controller/user.js
    const {Controller} = require('egg');
    class UserController extends Controller {
      async info() {
        const {ctx} = this;
        const userId = ctx.params.id; // 从路由上获取参数
        // 调用Service 查询用户信息
        const userInfo = await ctx.service.user.find(userId); 
        ctx.body = userInfo;
      }
    }
    
    module.exports = UserController;
    
    // app/service/user.js
    const {Service} require('egg');
    class UserService extends Service {
      // 从数据库查询数据
      async find(uid) {
        const user = await this.ctx.db.query(
          'select * from user where uid = ?',
          uid,
        );
    
        // 其他的一些计算,例如从第三方服务返回数据
        const picture = await this.getPicture(uid);
    
        return {
          name: user.user_name,
          age: user.age,
          picture,
        };
      }
    
       // 第三方请求
       async getPicture(uid) {
    // 使用 this.ctx.curl 发起网络调用 const result = await this.ctx.curl(`http://photoserver/uid=${uid}`, {dataType: 'json'} ); return result.data; } } module.exports = UserService

     

标签:02,const,uid,Service,app,ctx,笔记,Eggjs,user
From: https://www.cnblogs.com/mimaomaomi/p/17229394.html

相关文章

  • 读Java性能权威指南(第2版)笔记20_垃圾回收G
    1. Survivor空间1.1. 新生代被划分为两个Survivor空间和一个Eden空间的原因1.1.1. 刚刚被创建并且还在使用中,所以不能被回收,但它们的寿命并没有长到足以进入老年代......
  • 多媒体技术 2023-03-18
    Audition的使用音频的获取新建-->多轨文件或者音频文件直接选音频文件,默认是单轨。 设置采样率8khz,声道:单,位深度8录制声音后,可以调整振幅 比特率=采样率*声道*位......
  • 2023.3.17结对总结
        今天实现了一条线路的起始站与终止站的查询......
  • #yyds干货盘点#【愚公系列】2023年03月 .NET CORE工具案例-使用MailKit使用SMTP协议进
    (文章目录)前言1.MailKit简介MailKit是最流行且最强大的.NET邮件处理框架之一,下面为大家简单介绍MailKit的使用方式(IMAP为例)2.MailKit功能安全SASL身份验证支......
  • day17(2023.3.17)
    1.(Generics)泛型 泛型类在类上定义泛型 2.泛型接口在接口上定义泛型指定的  3.没指定的 4.泛型方法的使用 5.运行结果: day17(2023.3.17)星期五......
  • 【2023全球半导体IC新品盛宴】一年一度Embedded World全球顶级嵌入式会展结束,盘点各大
     今年我们国内也有越来越多的厂家开始参展,下面逐一将这三天搜集整理的资讯给大家做个分享【视频版】https://www.bilibili.com/video/BV1CX4y1f7Fx【ST意法半导体......
  • 总结20230317
    今天是周五,所以是课最多的一天,但是还是很高兴的,因为上完课迎接我的就是假期,可以说是苦尽甘来吧。今天的课是计算机网络、概率论、web应用开发技术、数学建模。计算机网络......
  • 【漏洞复现】74cmsSEv3.4.1任意文件读取漏洞(CVE-2022-26271)
    【漏洞复现】74cmsSEv3.4.1任意文件读取漏洞(CVE-2022-26271)0x01漏洞描述春秋云镜靶场:74cmsSEv3.4.1存在任意文件读取漏洞。CVE描述:74cmsSEv3.4.1wasdiscoveredto......
  • 2023-03-17 堆和优先队列
    01_编译的详细过程我们这里虽然介绍的是c程序的编译过程,但是实际上所有编译型语言的编译过程,大致是类似的编译的四个过程我们平时编译时,不管是通过IDE图形界面来编译......
  • 2023/3/17 做题技巧总结
    T1对于一道题目,如果描述有类似于“对于\(\forallx,y\in\mathbb{S}\)都有\(x\oplusy\in\mathbb{S}\)(其中\(\oplus\)为任意满足交换律的运算)”的描述时,我......