• 注册接口


    注册接口:

    Post 请求  local host:4000/api/user/register

    步骤:

    (1) 进行验证

    (2) 查询数据库,查询的依据是用户的email

    (3) 进行判断,如果查询得到的数据大于0,则邮箱已经存在,用户被注册了,如果查询数据小于0,就表示用户还没有被注册,我们可以注册。我们应该构建注册用户的数据结构,数据结构里面的password进行加密处理,构建好数据结构,利用await 进行数据库的储存,最后返回json 对象

    验证:

     //input  验证
      const  {errors, isValid} = validatorRegisterInput(ctx.request.body);
      if(!isValid) {
          ctx.status=400;
          ctx.body =errors;
          return  ;
      }
    

     验证的内容 

    const  Validator = require('validator');
    const  isEmpty  = require('./isempty');
    module.exports= function  validatorRegisterInput(data) {
        let errors= {};
        data.name        = !isEmpty(data.name) ? data.name :'';
        data.email       = !isEmpty(data.email) ? data.email :'';
        data.password    = !isEmpty(data.password) ? data.password :'';
        data.password2   = !isEmpty(data.password2) ? data.password2 :'';
        if (!Validator.isLength(data.name, { min: 2, max: 30 })) {
            errors.name = '名字的长度不能小于2位且不能超过30位';
          }
        
          if (Validator.isEmpty(data.name)) {
            errors.name = '名字不能为空';
          }
        
          if (!Validator.isEmail(data.email)) {
            errors.email = '邮箱不合法';
          }
        
          if (Validator.isEmpty(data.email)) {
            errors.email = '邮箱不能为空';
          }
        
          if (Validator.isEmpty(data.password)) {
            errors.password = 'password不能为空';
          }
        
          if (!Validator.isLength(data.password, { min: 6, max: 30 })) {
            errors.password = 'password的长度不能小于6位且不能超过30位';
          }
        
          if (Validator.isEmpty(data.password2)) {
            errors.password2 = 'password2不能为空';
          }
        
          if (!Validator.equals(data.password, data.password2)) {
            errors.password2 = '两次密码不一致';
          }
        return {
            errors,
            isValid:isEmpty(errors)
        };
    };
    

      查询数据库,查询的依据是用户的email

    const  findResult=await User.find({
         email:ctx.request.body.email
      });
    

      进行判断

    if(findResult.length>0) {
        ctx.status=500;
        ctx.body= {
           email:'邮箱已经存在'
        }
      } 
      //2.没有查询到,储存起来
      else { 
          //全球公用头像的使用
          const avatar = gravatar.url(ctx.request.body.email, 
            {s: '200', r: 'pg', d: 'mm'
          });
          const  newUser=new User({
             name:ctx.request.body.name,
             email:ctx.request.body.email,
             avatar,
             password: tools.enbcrypt(ctx.request.body.password)
          });
            // console.log(newUser);
            // 存储到数据库
            await newUser
            .save()
            .then(user => {
              ctx.body = user;
            })
            .catch(err => {
              console.log(err);
            });
          // 返回json数据
          ctx.body = newUser;
    

      完整的demo

    router.post('/register',async  ctx=>{
      //input  验证
      const  {errors, isValid} = validatorRegisterInput(ctx.request.body);
      if(!isValid) {
          ctx.status=400;
          ctx.body =errors;
          return  ;
      }
      //查询数据库并且储存得到的数据
      const  findResult=await User.find({
         email:ctx.request.body.email
      });
      // console.log(findResult);
      //1.在数据库中查询到该邮箱
      if(findResult.length>0) {
        ctx.status=500;
        ctx.body= {
           email:'邮箱已经存在'
        }
      } 
      //2.没有查询到,储存起来
      else { 
          //全球公用头像的使用
          const avatar = gravatar.url(ctx.request.body.email, 
            {s: '200', r: 'pg', d: 'mm'
          });
          const  newUser=new User({
             name:ctx.request.body.name,
             email:ctx.request.body.email,
             avatar,
             password: tools.enbcrypt(ctx.request.body.password)
          });
            // console.log(newUser);
            // 存储到数据库
            await newUser
            .save()
            .then(user => {
              ctx.body = user;
            })
            .catch(err => {
              console.log(err);
            });
          // 返回json数据
          ctx.body = newUser;
          
      }
    
    })
    

      

    router.post('/register',async ctx=>{
    //input 验证
    const {errors, isValid} = validatorRegisterInput(ctx.request.body);
    if(!isValid) {
    ctx.status=400;
    ctx.body =errors;
    return ;
    }
    //查询数据库并且储存得到的数据
    const findResult=await User.find({
    email:ctx.request.body.email
    });
    // console.log(findResult);
    //1.在数据库中查询到该邮箱
    if(findResult.length>0) {
    ctx.status=500;
    ctx.body= {
    email:'邮箱已经存在'
    }
    }
    //2.没有查询到,储存起来
    else {
    //全球公用头像的使用
    const avatar = gravatar.url(ctx.request.body.email,
    {s: '200', r: 'pg', d: 'mm'
    });
    const newUser=new User({
    name:ctx.request.body.name,
    email:ctx.request.body.email,
    avatar,
    password: tools.enbcrypt(ctx.request.body.password)
    });
    // console.log(newUser);
    // 存储到数据库
    await newUser
    .save()
    .then(user => {
    ctx.body = user;
    })
    .catch(err => {
    console.log(err);
    });
    // 返回json数据
    ctx.body = newUser;
     
    }

    })
  • 相关阅读:
    Vue 多环境的配置 look
    01 java基本类型和包装类型的区别? look
    03 java自动装箱与拆箱了解吗?原理是什么? look
    Windows下MySQL的安装和删除 look
    02 java包装类型的缓存机制 look
    test
    keepalived 主备搭建及配置
    rename批量重命名文件名
    keepalived执行stop命令无法退出进程问题
    职场PUA
  • 原文地址:https://www.cnblogs.com/guangzhou11/p/10356324.html
Copyright © 2020-2023  润新知