用户登录

在控制器或者其它地方,有些业务逻辑我们可以抽离出来,单独把它们放在一个 Service 里面,Service 表示服务,这里它的意思就是可以提供某种服务或者叫能做某些事情的东西 ..

比如现在我需要查询出内容的列表,这个功能就可以放在一个服务里,然后在控制器里可以使用这个服务去查询出内容的列表 ..

服务要放在 app .. service 目录的下面,新建一个叫 demo 的服务,代码放在 demo.js 这个文件里面 ..

use strict ... 再从 egg 里面,把 Service 解构出来用一下 .. const { Service } = require('egg')

然后新建一个服务类 .. 类的名字可以是 DemoService ... 让它继承 egg 里的 Service ...

最后再导出创建的 DemoService ... module.exports ... DemoService ..

在这个类里面可以添加一个方法,这个方法就是服务里面提供的一些功能 .. 查询数据是异步动作,所以方法可以用一个 async ,表示方法里面可能会包含异步动作 .. 方法的名字可以是 listPost

然后添加一个 posts ... await .. 用一下 this.app 上的 mysql ,它上面提供了一些方法可以处理数据库的数据 .. 查询出内容列表可以使用 select 这个方法 .. 数据表的名字是 posts ..

最后再 return 查询出来的 posts ...

使用服务

下面我们直接在之前创建的这个 demo 控制器里用一下刚才定义的服务 .. 在控制器里添加一个新的方法 .. 名字是 posts ...

方法里面添加一个 posts ... await .. 用一下 this.ctx.service 上的 demo 这个服务 ... 这个服务里的 listPost 方法可以返回内容列表 ...

this.ctx.body = posts ... 设置一下响应的主体,就是用 demo 服务里的 listPost 方法得到的内容列表 ...

打开应用的路由 ... router.js .. 在里面定义一条新的路由 ... router.get ... 地址是 posts ... 用一下 controller.demo.posts,demo 控制器里的 posts 方法来处理 ..

回到浏览器 ... 访问一下 posts 这个地址 ... 应用响应回来的就是应用数据库里的 posts 表里面的内容列表 ..

打开数据库客户端 ... 在 egg 数据库 posts 表里面再添加一条新的记录 ... id 号是 2 .... title 是 Node.js ...

然后再回到浏览器预览一下 ...

你会看到响应回来的内容列表里会包含刚才我们添加的这条数据记录 ...

服务:定义与使用查询内容列表的服务《 Egg.js:企业级应用框架 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点