后端——面试题-注册、登录、数据库egg-mysql、svg验证码、服务层Service

发布于:2023-01-24 ⋅ 阅读:(608) ⋅ 点赞:(0)

目录

一、注册

二、登录

三、数据库egg-mysql

1.下载==>小黑窗输入指令

2.开启插件

3.配置数据库

4.使用方式:

四、验证码

五、服务层Service

六、注意点:


一、注册

面试题:

你的xx项目中的注册的流程讲一讲:

        注册的前端

        1.前端表单验证-减轻服务器的负载-DOM操作写特效

            1.1 邮箱验证:绑定change事件 判断value是否符合邮箱正则

            1.2 密码验证:密码要符合格式(自己定制的比如大小写特殊符号),两次密码要一致

            1.3 昵称验证:昵称要符合格式(自己定制的比如大小写特殊符号)

            1.4 身份证的验证:(分前端和后端的验证)图片的格式和大小清晰度-预览

        2.点击提交按钮时 获取用户交互的信息

        3.把数据POST发送给后端

        4.等后端返回数据

            如果返回的数据包的业务码是xxx  就操作页面xxx

            如果返回的数据包的业务码是正确 就跳转到登录页面或者直接帮用户登录

二、登录

面试题:

你的xx项目中的登录的流程讲一讲:

           登录的前端

            1.前端表单验证-减轻服务器的负载-DOM操作写特效

                1.1 邮箱验证:绑定change事件 判断value是否符合邮箱正则

                1.2 密码验证:密码要符合格式(自己定制的比如大小写特殊符号),两次密码要一致

            2.POST暗文把密码发送给后端--还有一种技术:JWT

            3.等后端返回数据

                如果返回的数据包的业务码是xxx  就操作页面xxx

                如果返回的数据包的业务码是正确 就跳转到首页页面或者其他页面

            4.验证码:

                前端页面渲染就请求验证码==>后端生成验证码然后设置到缓存 在把验证码发送前端

                前端获取用户输入的验证码发送给后端==>取出缓存和接受到的 对比

           

三、数据库egg-mysql

可以在官网搜:egg - 为企业级框架和应用而生 - Egg

搜egg-mysql

框架提供了 egg-mysql 插件来访问 MySQL 数据库。 安装与配置

1.下载==>小黑窗输入指令

npm i --save egg-mysql   或者 npm i egg-mysql

2.开启插件

// config/plugin.js
module.exports = {
  mysql: {
    enable: true,
    package: "egg-mysql"
  }
};

3.配置数据库

config/config.default.js
config.mysql={
    client:{
      host:"localhost",  //host   这里填‘localhost’ 或者“192.0.0.1”
      port:"3306",       //端口
      user:"root",      //用户名
      password:"root",   //密码
      database:"h2112"   //数据库名
    }
  }

4.使用方式:

  async getuserinfo(){
    var data1 = await this.app.mysql.query("select *from studentinfo")
    this.ctx.body=data1
  }

四、svg验证码

也可以在官网看手册如何使用:

svg-captcha - npm

实现验证码使用svg-captcha第三方模块

1.下载
cnpm i --save svg-captcha
也可以写:   npm i svg-captcha

2.导入生成验证码

//Service文件:或者 controller下的user.js中
'use strict';
const Service = require('egg').Service;
const svgCaptcha = require('svg-captcha');   //核心==>引入
class ToolsService extends Service {
    // 产生验证码
    async captcha() {
        const captcha = svgCaptcha.create({   //核心==>设置验证码的样式
            size: 4, //随机字符串的个数
            fontSize: 50,
            width: 100,
            height: 40,
            background: '#cc9966'
        });
        this.ctx.session.code = captcha.text;//缓存验证码中的文字
        return captcha;//返回验证码
    }
}
module.exports = ToolsService;

//控制器文件:
    async coder() {
        const {ctx} = this;
        let captcha = await this.service.tools.captcha(); // Service里面的方法
        ctx.body = captcha.data; // 返回一张svg图片
    }

五、服务层Service

在 Controller 中可以调用任何一个 Service 上的任何方法,同时 Service 是懒加载的,只有当访问到它的时候框架才会去实例化它。

调用 service 进行业务处理

const res = await this.ctx.service.user.setinfo(req);   //setinfo是一个工具函数

六、注意点:

1、

let email="123@qq.com"

let sql=`insert****,"${email}"`  //这一行的email不包括双引号,仅仅取到了123@qq.com,所以这里要加引号

2、

let re=await this.app.mysql.query(sql)  //把我自己写的sql语句插入到数据库,re是一个对象

本文含有隐藏内容,请 开通VIP 后查看