组队没有后端怎么办?教你用js的egg框架快速搭建后端(2)

136 阅读2分钟

这是我参与「第四届青训营」笔记创作活动的第3天

前言

这篇文章接着上一篇组队没有后端怎么办?教你用js的egg框架快速搭建后端(1),今天我来介绍一下怎么用egg连接mysql数据库。

安装

首先,连接mysql数据库,电脑上首先要有mysql环境。安装mysql就不在此处赘述了。 要让egg连接到mysql,需要额外安装一个框架。在命令行输入:

npm install egg-mysql

等待安装完成。

使用

在项目config目录下,找到config.default.js文件,在module.exports中加入如下代码:

config.mysql = {
    client: {
      // host
      host: 'localhost',
      // 端口号
      port: '3306',
      // 用户名
      user: 'root',
      // 密码
      password: '123456',
      // 数据库名
      database: 'blog',
    },
    // 是否加载到 app 上,默认开启
    app: true,
    // 是否加载到 agent 上,默认关闭
    agent: false,
  }

这里面要配置的就是mysql的相关配置,包括host连接,端口号,用户名和密码,以及要连接到的那个数据库名上。 接下来,配置完毕之后就可以写相关代码了。 根据mvc架构,数据库操作最好放在service层中。我们在项目下创建一个server文件夹,在里面编写server层的代码。

// app/service/user.js
class UserService extends Service {
  async find(uid) {
    // 假如 我们拿到用户 id 从数据库获取用户详细信息
    const user = await this.app.mysql.get('users', { id: 11 });
    return { user };
  }
}

egg-mysql中提供了很多api来操作数据库,可以不用编写sql代码。例如上面的例子就是使用了api来调用数据库。一般来说也推荐使用api调用的方式来防止sql注入。当然,在特殊情况下你也可以使用sql语句来操作数据库。

// app/service/user.js
class UserService extends Service {
  async find(uid) {
    // 假如 我们拿到用户 id 从数据库获取用户详细信息
    const user = await this.app.mysql.query("select * from users where id='11");
    return { user };
  }
}

这两个例子的结果是等价的。 如果要查找更多的sql api,可以到该网址上查找。