我们在服务端应用里面安装了一个数据仓库服务的驱动,用它提供的功能创建了一个数据服务的连接,现在使用这个连接就可以处理数据仓库里的数据了。
之前我们在应用里创建一个获取内容列表用的接口,这个接口现在会给客户端响应一组静态的数据,现在我们可以让这个接口响应一组在数据仓库里的数据。
打开项目里 src/post/post.service ,先在这个文件的顶部导入数据仓库连接,connection ,它来自上一级目录里的 app 下面的 database 目录里的 mysql 这个模块。
然后修改一下在这个服务里定义的 getPosts 函数,去掉这组静态的数据,在里面先准备一段 SQL,名字叫 statement ,用一个字符模板,要执行的 SQL 是 SELECT * FROM post
然后把这段 SQL 交给数据服务执行,可以使用 connection 上的方法,执行的结果会是一个数组,数组里的第一个项目是我们需要用的数据,这里用一个解构的写法解构这个数组,const 方括号,data, 等于 await ,执行 connection.promise() 这个方法会返回一个 Promise,接着再用 query() 把要执行的 SQL 交给这个 query() 方法。这个函数的最后会返回这个 data。
因为这里用了 await 等待执行的结果,所以我们要把这个函数标记成一个 async 函数,用一个 async 关键词。
然后打开 post.controller , 找到内容列表接口用的处理器,就是这个 index 函数,清理一下这个函数,去掉不需要的东西。
再把这个 index 标记成一个 async 函数,在这个函数里执行 getPosts 的前面,加上一个 await 。
在 HTTP 客户端,发送一下 内容列表 请求,现在从服务端的 内容列表 接口响应回来的数据,就会是从应用的数据仓库那里调取出来的内容。
在数据库客户端,打开应用数据仓库里的 post 这个数据表格,刚才你看到的内容就是这个表格里的这几条数据记录。