当前位置: 首页 > news >正文

简单用户管理系统(P-05)

系列第一个05

Node接口搭建-使用全球公认头像gravatar

  • 需要使用它,可以npm install gravatar ,可以使用npm 去找下 npmjs,发现gravatar 去查看地址 www.npmjs.com/package/gra… 这是后你应该去找网站 cn.gravatar.com/site/check/… 去注册然后上传照片

const express = require('express');
const router = express.Router();
const bcrypt = require("bcrypt");
var gravatar = require('gravatar'); // 头像
const User = require("../../models/User");

router.get('/test', (req, res) => {
    res.json(
        {
            code: 0,
            msg: "test数据获取成功"
        }
    )

})


// 注册接口
router.post('/register', (req, res) => {
    // console.log(req.body.email);
    const rObj = req.body;

    // 要注册,需要先去验证下是否邮箱重复
    User.findOne({ email: rObj.email })
        .then(user => {
            if (user) {
                res.status(200).json({
                    code: 2,
                    msg: `当前邮箱 { ${rObj.email} }已经存在`,
                })
            } else {
                const  avatar = gravatar.url(req.body.email, {s: '200', r: 'pg', d: 'mm'});

                const newUser = new User({
                    name: rObj.name,
                    password: rObj.password,
                    avatar,
                    email: rObj.email
                });

                // 我们需要对密码进行加密
                bcrypt.genSalt(10, (err, salt) => {
                    bcrypt.hash(newUser.password, salt, (err, hash) => {
                        if(err) throw err;
                        newUser.password = hash;
                    })
                });
                newUser.save()
                    .then(user => {
                        res.status(200).json(
                            {
                                code: 0,
                                msg: "新增用户成功!",
                                data: user
                            }
                        )
                    })
                    .catch(err => res.json(
                        {
                            code: 1,
                            msg: "操作失败,请重试!"
                        }
                    ));
            }
        })


});

module.exports = router;






/**
 
{
    cdoe: 0 成功
    code:1 失败
    code:2 数据已存在或字段已存在
    code:3 数据未作任何更新
    code:110 登陆超时或者登陆失效,或者非法登陆用户
}
 */

复制代码

相关文章:

  • typedef 与指针、多维数组
  • 32、mysql数据库增删改查
  • Android -- 保存文件
  • ORACLE EXECUTE IMMEDIATE 用法详解
  • SpringMVC使用@ResponseBody输出字符串时遇到的乱码问题及解决办法
  • 【Advanced Windows Phone Programming】在windows phone 8中解码mp3 和编码pcm
  • JavaScript创建对象(五)——动态原型模式
  • Asp.Net Mvc + ComBoost.Mvc快速开发
  • Laravel Mix运行时关于es2015报错解决方案
  • 建站初级指南
  • 一个ViewGroup#dispatchDraw()中的NP分析
  • LINUX命令 cp: omitting directory 出现的问题解决办法
  • 枚举类的简单应用
  • 手把手教你启用Win10的Linux子系统(超详细)
  • [转载]C# Double toString保留小数点方法
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 2019.2.20 c++ 知识梳理
  • Brief introduction of how to 'Call, Apply and Bind'
  • CSS盒模型深入
  • es6要点
  • Intervention/image 图片处理扩展包的安装和使用
  • js
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • MobX
  • MySQL数据库运维之数据恢复
  • Redash本地开发环境搭建
  • vue-router 实现分析
  • 缓存与缓冲
  • 配置 PM2 实现代码自动发布
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 什么是Javascript函数节流?
  • 赢得Docker挑战最佳实践
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • !!java web学习笔记(一到五)
  • #FPGA(基础知识)
  • #ifdef 的技巧用法
  • #include到底该写在哪
  • #Z0458. 树的中心2
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (12)目标检测_SSD基于pytorch搭建代码
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)关于多人操作数据的处理策略
  • ***测试-HTTP方法
  • .dwp和.webpart的区别
  • .NET BackgroundWorker
  • .net core 控制台应用程序读取配置文件app.config
  • .Net mvc总结
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装