Koa2+mysql 搭建用户信息注册和登录接口服务(下)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。


3.JPG


安装中间件 koa2-cors


cors跨域资源共享是一种机制,用来允许不同源服务器上的指定资源可以被特定的Web应用访问。


cors 安装


npm install koa-cors --save


cors 使用


//app.js
const Cors = require('koa2-cors')
app.use(Cors())


koa连接数据库(mysql)



需要安装sql依赖;

npm install mysql --save


SQL配置



新建一个 sql文件夹,主要用于存放sql的各种操作;


sql/config.js
const mysqlConfig = {
    user: "Koa", //账号
    password: "Koa", //密码
    database: "Koa", //数据库
    host: "122.112.172.87", //服务器地址
    port: 3306, //数据库端口
    timezone: '08:00'
};
module.exports = mysqlConfig;


koa封装sql数据库query函数



//sql/query.js
const mysql = require("mysql");
const config = require("./config");
//创建连接池
const pool = mysql.createPool(config);
const query = (sql, val) => {
    return new Promise((resolve, reject) => {
        pool.getConnection(function (err, connection) {
            if (err) {
                reject(err);
            } else {
                connection.query(sql, val, (err, fields) => {
                    if (err) {
                        reject(err);
                    } else {
                        resolve(fields);
                    }
                    connection.release();
                });
            }
        });
    });
};
module.exports = { query };


新增接口 - 用户信息注册 和 登录



新建两个文件夹 controller 和 model

controller主要存放操作和数据处理的一些逻辑


// controller/userController.js
// 用户注册
const User = require('../model/userModel')
class UserController {
    // 用户注册
    async register(ctx) {
        let { name, tel, password } = ctx.request.body
        const names = await User.getUser(name) //用户名是否重复
        const tels = await User.getTel(tel) //手机号是否重复
        if (tels.length > 0) {
            ctx.body = { type: 'warning', message: '该手机号已注册' }
        } else {
            if (names.length > 0) {
                ctx.body = { type: 'error', message: '用户名已存在' }
            } else {
                await User.insert(name, tel, password)
                ctx.body = { type: 'success', code: 0, message: '注册成功' }
            }
        }
    }
    // 登录
    async login(ctx) {
        let tel = ctx.request.body.tel
        let password = ctx.request.body.password
        const res = (await User.getTel(tel))[0]
        if (res) {
            if (res.password == password) {
                ctx.body = {
                    code: 0,
                    data: {
                        name: res.name,
                        tel: res.tel
                    },
                    message: '登录成功',
                    type: 'success'
                }
            } else {
                ctx.body = { type: 'error', message: '用户名或密码不正确' }
            }
        } else {
            ctx.body = { type: 'error', message: '用户名不存在' }
        }
    }
}
module.exports = new UserController()


model中操作数据库的函数(包含数据库语句)



// model/userModel.js
const query = require('../sql/query')
class UserModel {
    //获取用户
    async getUser(name) {
        return await query(`SELECT * FROM user WHERE name = '${name}'`)
    }
    //获取用户手机号
    async getTel(tel) {
        return await query(`SELECT * FROM user WHERE tel = '${tel}'`)
    }
    //用户注册
    async insert(name, tel, password) {
        return await query(`INSERT INTO user(name, tel, password) VALUES('${name}', '${tel}', '${password}')`)
    }
}
module.exports = new UserModel()


在router路由文件里面注册



//router/index.js
const Router = require('koa-router')
const router = new Router()
//用户
const UserController = require('../controller/UserController')
//用户注册
router.post('/register', UserController.register)
//用户信息登录
router.post('/login', UserController.login)
module.exports = router


接口调用



使用post请求就可以调用 /register 和 /login两个接口啦;当然也可以再封装其他更多的接口。


结尾



到此 用户的注册和登录接口就写完了。后续继续其他功能添加。有兴趣的可以查看源码 源码地址,一起学习,一起加油。我是叫我詹躲躲,很高兴认识你。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
Java 关系型数据库 MySQL
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口(下)
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口
12 0
|
3天前
|
Java 关系型数据库 MySQL
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口(上)
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口
18 0
|
4天前
|
Cloud Native 关系型数据库 MySQL
云原生数据仓库产品使用合集之如何使用ADB MySQL湖仓版声纹特征提取服务
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
3天前
|
前端开发 关系型数据库 MySQL
【MySQL × SpringBoot 突发奇想】全面实现流程 · 数据库导出Excel表格文件的接口
【MySQL × SpringBoot 突发奇想】全面实现流程 · 数据库导出Excel表格文件的接口
24 0
|
4天前
|
关系型数据库 MySQL 数据库
MySQL 启动 登录报错Job for mysqld.service failed because the control process exited with error code. See
MySQL 启动 登录报错Job for mysqld.service failed because the control process exited with error code. See
|
4天前
|
安全 关系型数据库 虚拟化
WIndows Server 远程桌面服务—RDS
WIndows Server 远程桌面服务—RDS
|
4天前
|
SQL 关系型数据库 MySQL
【简单无脑】自动化脚本一键安装虚拟机下的MySQL服务
该文章提供了在虚拟机上安装MySQL服务的简化方法,特别是针对新手。作者提供了一个自动化脚本`install_mysql.sh`,使得安装过程更简单。用户需要下载`install.rpm`资源,将其放在指定目录下,然后创建并编辑脚本文件,将提供的代码粘贴进去,通过`chmod u+x`授权,最后运行脚本`./install_mysql.sh [rpm文件路径]`来安装MySQL。文章还附有相关图片说明。
37 1
【简单无脑】自动化脚本一键安装虚拟机下的MySQL服务
|
4天前
|
弹性计算 关系型数据库 MySQL
检测MySQL 服务是否存活
【4月更文挑战第29天】
9 0
|
4天前
|
NoSQL 关系型数据库 Redis
数据管理DMS产品使用合集之要通过 DMS 登录到 RDS、DRDS 或 Redis,我该怎么操作
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
|
4天前
|
弹性计算 关系型数据库 MySQL
检测 MySQL 服务是否存活
【4月更文挑战第28天】
11 0

推荐镜像

更多