使用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进行验证

相关推荐
苏三说技术33 分钟前
Claude Code从失控到起飞,只用了这些技巧
后端
长栎1 小时前
写 for 循环写了十年,你却从没用过迭代器模式最狠的那一面
后端
LiaCode2 小时前
Redis 在生产项目的使用
前端·后端
用户559822481222 小时前
Docker Compose Down 导致容器数据误删——ext4 日志恢复全记录
后端
LiaCode2 小时前
一天学完 redis 的爽翻版核心知识总结
前端·后端
大刚测试开发实战2 小时前
如何内网穿透访问本地私有化部署的TestHub
前端·后端·github
xiaodaoluanzha2 小时前
迄今為止,最簡單的編程語言 Nolang
前端·后端
Csvn2 小时前
Docker 容器管理入门 — 从镜像到容器编排
后端
用户762352425912 小时前
ShardingJDBC
后端
行者全栈架构师2 小时前
IDEA 中 Maven 项目的 15 个红色报错快速解决方法
java·后端