1.gravatar
来解决头像问题
npm i gravatar
对应的Post请求
/ @route POST api/users/register
// @desc 返回的请求的json数据
// @access public
router.post('/register', (req, res) => {
// 查询数据库中是否拥有邮箱
User.findOne({
email: req.body.email
}).then(user => {
if (user) {
return res.status(400).json('邮箱已被注册!');
} else {
const avatar = gravatar.url(req.body.email, {
s: '200',
r: 'pg',
d: 'mm'
});
const newUser = new User({
name: req.body.name,
email: req.body.email,
avatar,
password: req.body.password,
});
bcrypt.hash(newUser.password, null, null, (err, hash) => {
if (err) throw err;
newUser.password = hash;
newUser
.save()
.then(user => res.json(user))
.catch(err => console.log(err));
});
}
});
});
2.通过Postman测试:
测试成功的页面:
把标注的粘贴到浏览器中
"avatar": "//www.gravatar.com/avatar/b427e9d11e715b6ee2066917c06f567d?s=200&r=pg&d=mm",
得到的结果如下:
可以进入www.guavatar.com,生成自己全球唯一的头像。
2.搭建登录接口
routes\api\users.js
的代码如下:
// @route POST api/users/login
// @desc 返回token jwt passport
// @access public
router.post('/login', (req, res) => {
const email = req.body.email;
const password = req.body.password;
// 查询数据库
User.findOne({
email
})
.then(user => {
if (!user) {
return res.status(404).json({
email: "用户不存在!"
});
}
//密码匹配
// Load hash from your password DB.
bcrypt.compare(password, user.password)
.then(isMatch => {
if (isMatch) {
res.json({
msg: "success"
});
} else {
return res.status(400).json({
password: "密码错误"
});
}
})
})
});
开始进行测试: