注册接口
注册接口:
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号