返回

Egg.js+Mysql零基础上手:入门、配置、实战部署

前端

Egg.js和MySQL:从入门到高级

简介

在后端开发中,数据持久化至关重要。本文将详细介绍如何使用Egg.js框架轻松地将MySQL数据库集成到您的项目中。我们将探讨两种配置方案,并通过一个实际的项目需求——用户注册和登录系统——来展示其用法。最后,我们将使用Docker进行实际部署,以便您可以在任何环境中轻松地部署您的应用程序。

配置方案

Egg.js提供了两种配置MySQL的方式:

  • 通过app.js: 在app.js文件中,找到app.config中的mysql项,并按照指定的格式进行配置。
  • 通过config.default.js: 在config.default.js文件中,找到mysql项,并进行相应的配置。

项目实战:用户注册和登录

为了演示MySQL集成的实际应用,我们将创建一个用户注册和登录系统。

创建项目

首先,使用Egg.js初始化一个新的项目:

egg-init <project-name>

安装MySQL模块

npm install egg-mysql

配置MySQL插件

在config/plugin.js中,配置MySQL插件:

exports.mysql = {
  enable: true,
  package: 'egg-mysql',
};

创建用户模型

在app/model中,创建User模型:

'use strict';

module.exports = app => {
  const {INTEGER, STRING, DATE} = app.Sequelize;

  const User = app.model.define('user', {
    id: {type: INTEGER, primaryKey: true, autoIncrement: true},
    username: {type: STRING(30), allowNull: false, unique: true},
    password: {type: STRING(128), allowNull: false},
    created_at: {type: DATE, allowNull: true},
    updated_at: {type: DATE, allowNull: true},
  });

  return User;
};

创建用户控制器

在app/controller中,创建用户控制器:

'use strict';

class UserController extends app.Controller {
  async register() {
    // 检查用户名是否存在
    // ...

    // 创建用户
    // ...

    // 返回成功信息
    // ...
  }

  async login() {
    // 查询用户是否存在
    // ...

    // 检查密码是否正确
    // ...

    // 生成token
    // ...

    // 返回成功信息和token
    // ...
  }
}

module.exports = UserController;

配置路由

在app/router.js中,配置路由:

module.exports = app => {
  const {router, controller} = app;

  router.post('/api/user/register', controller.user.register);
  router.post('/api/user/login', controller.user.login);
};

使用Docker部署

安装Docker

按照Docker官网的说明进行安装。

构建镜像

docker build -t <image-name> .

运行容器

docker run -p <port>:3000 <image-name>

访问应用程序

在浏览器中访问http://localhost:<port>即可访问应用程序。

常见问题解答

  • 如何连接到MySQL数据库?
    通过app.model.connect()方法。
  • 如何查询数据?
    使用app.model.findAll()或app.model.findOne()方法。
  • 如何插入数据?
    使用app.model.create()方法。
  • 如何更新数据?
    使用app.model.update()方法。
  • 如何删除数据?
    使用app.model.destroy()方法。

结论

本文提供了Egg.js和MySQL集成的全面指南,包括配置方案、实际项目应用和使用Docker进行部署。通过遵循这些步骤,您将能够在Egg.js项目中轻松地使用MySQL,并构建功能强大、可扩展的后端应用程序。