Node.js+express+MySQL仿美团注册登录绑定第三方登录

原文连接

准备

在开始做这个前,希望你已经配置好的Node,express和MySQL的开发环境。也可以参考参考文章

开发环境的配置

  • 新建项目

    参考Mac下express的安装和新建项目

  • mysql模块

    package.json文件的dependencies下加入下面的代码"mysql": "latest",

    最终的效果:

    然后cd到项目所在的目录,在终端中执行npm install,项目就会配置mysql模块。

  • 新建数据库配置文件

    在项目目录下新建一个db目录,在目录项新建两个文件DBConfig.jsusersql.js

    效果如下:

    其中的DBConfig.js是数据库的配置文件,只要代码如下:

module.exports =
{
    mysql: {
        user: ‘root‘,
        password: ‘123456‘,
        database: ‘userinfo‘
    }
};

就是数据库的用户名,密码和数据库名。如果你的数据库和代码不再一个电脑就需要数据库的地址。

usersql.js就是实现后台业务所需要的mysql的操作语句

var UserSQL = {
    insert:‘INSERT INTO user(username,password,date,type,openid) VALUES(?,?,?,?,?)‘,
    bangding:‘UPDATE user SET type = ?,openid = ? WHERE username = ? AND password = ? ‘,
    queryAll:‘SELECT * FROM user‘,
    getUserByOpenid:‘SELECT * FROM user WHERE openid = ? ‘,
    getUserByInfo:‘SELECT * FROM user WHERE username = ? AND password = ? ‘,
    deleteUserByInfo:‘DELETE FROM user WHERE username = ? AND password = ? ‘,
};
module.exports = UserSQL;

实现后台业务

  • 业务流程

    在实现业务之前还是先看看流程,我在用了美团app后自己画了一个美团登录和绑定第三方的简单流程。其中注册流程也简化了。

    关于注册我也简化了,就是输入账号和密码就可以注册。

  • 代码实现

    我的具体业务是写在users.js

    前提是已经建立了对应的数据库和表。

    首先要引入mysql依赖

// 导入MySQL模块
var dbConfig = require(‘../db/DBConfig‘);
var User = require(‘../db/usersql‘);

var mysql = require(‘mysql‘); // 引入mysql依赖
var client = mysql.createConnection(dbConfig.mysql); // 建立连接
  • 首先看看注册流程:

    1.用户输入用户名和密码,点击注册按钮,发送注册请求;

    2.后台根据用户提交的用户名和密码去数据区查找有没有对应的用户,

    1. 没有,注册成功,把新用户插入数据库 同时记录注册时间
    2. 有,注册失败,用户已经存在
// 注册接口
router.all(‘/user/register‘, function(req, res, next){
    if (req.method == "POST") {
        var param = req.body;
    } else{
        var param = req.query || req.params;
    }
    client.query(User.getUserByInfo,[param.username,param.password],function (err, results){
        if (err){
            throw err
       }else{
                // 数据库不存在 就注册成功
                if (results.length == 0) {
                    // 把新用户插入数据库
                    client.query(User.insert,[param.username,param.password,getDataStr(),‘‘,‘‘],function (err, results) {
                    if(err){
                        throw err
                    }else{
                        res.end(JSON.stringify({status:‘100‘,msg:‘注册成功!‘}));
                    }
                })
                } else{ // 数据库存在就注册失败
                    res.end(JSON.stringify({status:‘101‘,msg:‘该用户名已经被注册‘}));
                }
       }
    })
});
  • 登录流程

    登录就是更具用户提交过来的用户名和密码去数据区比较,用户名和密码都相同就登录,否则就提示用户名或密码错误。

    当然这是简单的,还要做的就是是否存在这个用户。

// 登录接口
router.all(‘/user/login‘, function(req, res, next){
    if (req.method == "POST") {
        var param = req.body;
    } else{
        var param = req.query || req.params;
    }
    client.query(User.getUserByInfo,[param.username,param.password],function (err, results){
        if (err){
            throw err
        }else{
                // 数据库存在
                if (results.length == 0) {
                    res.end(JSON.stringify({status:‘102‘,msg:‘用户名或密码错误‘}));
                } else{
                    if (results[0].username == param.username && results[0].password == param.password) {
                        res.end(JSON.stringify({status:‘100‘,msg:‘登录成功‘}));
                    }
                }
       }
    })
});
  • 第三方登录

    第三方登录有这么两步:

    根据用户的第三方用户唯一标识,这里统称openid去数据库查找

    1. 数据库的某个用户的openid和这个相等就返回注册成功
    2. 数据库没有就,跳转到绑定页面,做绑定用户名的操作

      这里,为了前台能够判断用户是否绑定了,我给了一个flag字段。

// 第三方登陆接口
router.all(‘/user/thirdlogin‘, function(req, res, next){
    if (req.method == "POST") {
        var param = req.body;
    } else{
        var param = req.query || req.params;
    }
    console.log(param.openid);
    client.query(User.getUserByOpenid,[param.openid],function (err, results){
        if (err){
            throw err
        }else{
                // 数据库不存在 就跳转绑定  flag=1 需要绑定  flag=2 // 不需要绑定
                if (results.length == 0) {
                    res.end(JSON.stringify({status:‘100‘,msg:‘操作成功‘,flag:‘1‘}));
                } else{ // 数据库存在就登录成功
                    res.end(JSON.stringify({status:‘100‘,msg:‘登录成功‘,flag:‘2‘}));
                }
       }
    })
});
  • 绑定用户

    这个就没什么了。就是更新用户的数据

// 绑定接口
router.all(‘/user/bangding‘, function(req, res, next){
    if (req.method == "POST") {
        var param = req.body;
    } else{
        var param = req.query || req.params;
    }
    client.query(User.getUserByInfo,[param.username,param.password],function (err, results){
        if (err){
            throw err
       }else{
                // 更新用户信息
                client.query(User.bangding,[param.type,param.openid,param.username,param.password],function (err, results) {
                if(err){
                    throw err
                }else{
                    res.end(JSON.stringify({status:‘100‘,msg:‘绑定成功!‘}));
                }
            })
       }
    })
});

测试

以上的流程基本是最简单的了。

测试可以在浏览器测试,根据接口输入对应的参数即可。我是自己写了一个简单的测试app。

我是事先在数据库插入了一些数据。

app效果:

总结

以前一直都是写iOS的app或是H5的app。这次自己独自写前后台。算是一下小小的突破。

前后台一起写的时候,发现前后台,需要很多的配合。以前只是接口不对了就找后台修改。这次就是自己修改了。

这需要很多的配合。就像月初做那个物流管理的app。后台人员我就不吐槽了。我都想找他把数据库的地址用户名和密码

要过来,我自己写后台算了。

要学习的还有很多,遇见问题不要怕,仔细的看报错信息,自己先静下心来思考,看文档。不懂再上网搜索。

时间: 2024-08-02 15:12:15

Node.js+express+MySQL仿美团注册登录绑定第三方登录的相关文章

Node.js+Express+MongoDB数据库实现网页注册登入功能

通过 Node.js + Express + MongoDB 实现网页注册账号 和 登入账号的功能 项目准备: 1: 事先准备好项目的页面 (首页页面 index.html)(登入页面 login.html) (注册页面 register.html) 2:    安装好 Node.js 需要使用的第三方模板 3:  设计路径设计 4:  理清功能需求 5:  创建 app.js  router.js   mgdb.js 三个 js 文件  和 public 和 views 文件夹 作用: app

Node.js连接Mysql,并把连接集成进Express中间件中

引言 在node.js连接mysql的过程,我们通常有两种连接方法,普通连接和连接池. 这两种方法较为常见,当我们使用express框架时还会选择使用中间express-myconnection,可以单独对mysql配置,也可以把connection集成到express中间件中. 最后送上一个node.js 连接各种主流数据库示例代码. 前提条件 1.安装mysql对应的驱动,npm install mysql 2.安装第三方插件express-connection, npm install e

基于 Node.js + Express + mongoDB + Bootstrap 搭建的电影网站

电影网站 ?? GitHub: https://github.com/bxm0927/movie-website 此项目是基于 Node.js + Express + mongoDB + Bootstrap 搭建的电影网站. 主要功能模块: 一期:前台电影展示页.电影详情页.后台电影管理中心(电影录入.电影修改) 二期:用户登录注册注销功能.用户识别和持久化.后台用户管理中心(用户录入.用户修改).电影评论 <!-- more --> 图片预览 技术栈 [前端] HTML/CSS/JS:亘古不

Node.js Express+Mongodb 项目实战

Node.js Express+Mongodb 项目实战 这是一个简单的商品管理系统的小项目,包含的功能还算挺全的,项目涵盖了登录.注册,图片上传以及对商品进行增.删.查.改等操作,对于新手来说是个很不错的练手项目,分享给大家. GitHub源码:https://github.com/oceanMin/cms 项目前准备 安装node.js 安装express 安装mongoDB 章节目录 快速开始 快速开始 模块 express商品管理系统介绍 框架搭建.ejs .express.static

node.js连接MySQL操作及注意事项

node.js作为服务端的js运行环境已经出现了有几年了,最近我有个朋友也在做这方面的开发,但是也是刚刚接触,遇到了很多坑.前几天他们在操作数据库的时候出现了点问题,后来我们一起看了看,其实都是node本身机制的一些问题,这里总结一下给新手做借鉴. 我朋友的数据库采用的是MySQL.(至于为什么不用mongoDB,这个是公司上层选型的结果,因为很多新手朋友似乎总是觉的node.js就是应该和mongoDB联系在一起,所以这里简单说下).我后来写了一个简单的小例子,整个小例子使用了express框

Node.js Express 框架学习

转载:http://JavaScript.ruanyifeng.com/nodejs/express.html#toc0 感觉很牛的样子,不过觉得对初学者没太大用,里面很多例子用的api都没有详细的说明.为了学习备份,所以拷贝过来. Express框架 来自<JavaScript 标准参考教程(alpha)>,by 阮一峰 目录 概述 运行原理 底层:http模块 对http模块的再包装 什么是中间件 use方法 Express的方法 all方法和HTTP动词方法 set方法 response

node.js连接mysql

第一步 到node.js官网 下载相对应的node.js版本 通用的傻瓜式安装,下一步下一步即可 第二步 开始node.js 初体验 新建一个文件命名为  hello.js 内容如下 var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World node.js \n'); }).

node.js高级编程|node.js 视频教程_基于node.js+Express.js+Jade+MongoDB实战开发

基于node.js+Express.js+Jade+MongoDB开发Web即时聊天系统课程讲师:幻星课程分类:前端开发适合人群:初级课时数量:36课时更新程度:完成用到技术:Node.js NPM. Express.NoSQL,MongoDB涉及项目:匿名聊天网站系统node.js视频教程:http://www.ibeifeng.com/goods-462.htmlnode.js 教程适合人群:node.js视频教程要求学员了解JavaScript,node.js入门教程适合希望更深入的学习N

Windows下Node.js+Express+WebSocket 安装配置

Node.js是一个Javascript运行环境(runtime).实际上它是对Google V8引擎进行了封装.V8引 擎执行Javascript的速度非常快,性能非常好.Node.js对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好.Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快.易于扩展的网络应用.Node.js 使用事件驱动, 非阻塞I/O模型而得以轻量和高效,非常适合在分布式设备上运行的数据密集型的