注册接口
注册接口:
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;
}
})
    越努力越幸运

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号