使用Egg.js实现用户注册数据入库

使用Egg.js实现用户注册数据入库

在本节课中,我们将学习如何使用Egg.js将用户传入的数据进行入库操作。具体步骤包括创建服务层、扩展辅助方法以及编写控制器逻辑。通过这三个步骤,我们可以实现完整的用户注册功能,并且可以使用Postman进行验证。

创建服务层

首先,在service/user.js中定义服务层逻辑:

js 复制代码
const Service = require('egg').Service;

class UserService extends Service {
  get User() {
    return this.app.model.User;
  }

  findEmail(email) {
    return this.User.findOne({ email });
  }

  async createUser(data) {
    data.password = this.ctx.helper.md5(data.password);
    const user = new this.User(data);
    await user.save();
    return user;
  }
}

module.exports = UserService;

该服务层包含三个主要方法:

  • get User(): 获取User模型。
  • findEmail(email): 根据邮箱查找用户。
  • createUser(data): 创建新用户并保存到数据库。

扩展辅助方法

extend/helper.js中添加MD5加密方法:

js 复制代码
const crypto = require('crypto');
exports.md5 = str => {
  return crypto.createHash('md5').update(str).digest('hex');
};

该方法用于对用户密码进行加密处理。

编写控制器逻辑

controller/user.js中编写控制器逻辑:

js 复制代码
const Controller = require('egg').Controller;

class UserController extends Controller {
  async create() {
    const { ctx } = this;
    ctx.validate({
      userName: { type: 'string' },
      email: { type: 'string' },
      password: { type: 'string' },
    });
    const userBody = ctx.request.body;
    if (await this.service.user.findEmail(userBody.email)) {
      ctx.throw(422, '邮箱已经存在');
    }
    ctx.body = await this.service.user.createUser(userBody);
  }
}

module.exports = UserController;

该控制器实现了用户注册的主要逻辑,包括数据验证、邮箱查重以及用户数据的创建和返回。

使用Postman进行验证

相关推荐
Mr.Java.3 分钟前
Spring AI MCP Server分布式翻车现场:Streamable协议的甜蜜与危险,以及无状态救赎
java·后端·spring·ai·负载均衡
夕除3 分钟前
spring boot 11
java·spring boot·后端
枕星而眠7 分钟前
C++ String类精讲:从基础用法到进阶底层原理
开发语言·c++·后端·学习方法
念何架构之路12 分钟前
Go pprof性能剖析
开发语言·后端·golang
zhz521413 分钟前
Spring Boot 接入国密实战:传输加密(TLCP)+ 密码加密(SM4)
java·spring boot·后端·国密·sm4
我是一颗柠檬20 分钟前
【JDK8新特性】函数式接口Day2
java·开发语言·后端·intellij-idea
Trouvaille ~21 分钟前
【Redis篇】Redis 安装与启动:快速搭建一个 Redis 环境
数据库·redis·后端·ubuntu·缓存·环境搭建·安装教程
Mahir0823 分钟前
Spring Boot 自动装配深度解密:从原理到自定义 Starter 实战
java·spring boot·后端·自动装配·自定义starter·大厂面试题
Mahir089 小时前
Spring 循环依赖深度解密:从问题本质到三级缓存源码级解析
java·后端·spring·缓存·面试·循环依赖·三级缓存
IT_陈寒13 小时前
Redis缓存击穿把我整不会了,原来还有这手操作
前端·人工智能·后端