原文连接

准备

在开始做这个前,希望你已经配置好的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。后台人员我就不吐槽了。我都想找他把数据库的地址用户名和密码
要过来,我自己写后台算了。
要学习的还有很多,遇见问题不要怕,仔细的看报错信息,自己先静下心来思考,看文档。不懂再上网搜索。

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

  1. 跟李宁老师做项目:小程序版网上商城(Node.js + Express + MySQL)-李宁-专题视频课程...

    跟李宁老师做项目:小程序版网上商城(Node.js + Express + MySQL)-8799人已学习 课程介绍         本课程采用的技术包括小程序开发.Node.js.Express和M ...

  2. node.js + express + mysql 简单运用

    主要是学习下如何简单得运用,自己可以写出一个后台 目录 初始化一个项目 创建web服务 get请求 post put delete 三个请求 引入ejs 模板 中间件 cookie session 路 ...

  3. 如何高效快速地在Linux系统上部署Node.js+Express+MySQL的开发环境(桌面可视化)...

    一.前言 可能一些初级前端和我一样,在有些项目需要前后台都一个人打通搞定的时候,对于后台和开发环境的部署还是比较头疼的.特别是Linux系统,由于没有系统接触过,也不太喜欢去记背那么多命令,大部分命令 ...

  4. 基于Node.js+Express+MySQL的爱心助农电商管理系统的设计与实现(附源码)

    摘要 2020年新型冠状病毒突如其来,在疫情的影响下,全国各个地区的农产品销售均不同程度的出现了需求信息不畅,农产品管理困难,订单物流模糊,农产品滞销等问题的出现.与此同时2020年也是我国全面小康, ...

  5. 视频教程-项目实战视频课程:美团小程序(Node.js+Express+支付)-微信开发

    项目实战视频课程:美团小程序(Node.js+Express+支付) 东北大学计算机专业硕士研究生,欧瑞科技创始人&CEO,曾任国内著名软件公司项目经理,畅销书作者,企业IT内训讲师,CSDN ...

  6. 项目实战视频课程:美团小程序(Node.js+Express+支付)-李宁-专题视频课程

    项目实战视频课程:美团小程序(Node.js+Express+支付)-473人已学习 课程介绍         小程序视频教程,本课程实现了美团小程序的核心部分.采用异步的方式,通过AJAX从服务端获 ...

  7. Node.js+Express+Vue+MySQL+axios的项目搭建

    1 基本搭建 创建vue项目之前需要先安装Node.js和MySQL数据库 1.1 vue脚手架安装 npm i vue -g npm i @vue/cli -g//初始化vue项目 vue crea ...

  8. Node.js Express+Mongodb 项目实战

    Node.js Express+Mongodb 项目实战 这是一个简单的商品管理系统的小项目,包含的功能还算挺全的,项目涵盖了登录.注册,图片上传以及对商品进行增.删.查.改等操作,对于新手来说是个很 ...

  9. TWaver HTML5 + Node.js + express + socket.io + redis(六)

    接上一篇TWaver HTML5 + Node.js + express + socket.io + redis(五), 这一篇将讲解如何用模版生成html页面, 如何验证用户登录, 您将了解到: 1 ...

最新文章

  1. K-近邻算法之交叉验证,网格搜索
  2. 智能车竞赛技术报告 | 节能信标组 - 洛阳理工学院 - Since 2021
  3. 如何跟踪log4j漏洞原理及发现绕WAF的tips
  4. 目标检测网络中的 bottom-up 和 top-down理解
  5. 6.4 Ext.core.DomQuery 单实例查询选择器,通过正则表达式查找DOM或者HTM
  6. Android用户界面设计:布局基础
  7. 数据库安全风险行为 目录 1. 数据库安全风险行为 2 1.1. Sql注入SQLi)攻击行为 2 1.2. . 过多的、不适当的和未使用的特权 2 1.3. 2. 权限滥用(数据库系统管理员和开
  8. 计算机基础中的函数,《计算机基础》中EXCEL函数的简单使用综述
  9. (已更新)短视频去水印解析客户端小程序源代码
  10. 聊一聊输入阻抗、输出阻抗和阻抗匹配
  11. 27种主流编程语言分类及优劣
  12. java爬虫音乐搜索_爬虫爬取抖音热门音乐 - MS_Andrew的个人空间 - OSCHINA - 中文开源技术交流社区...
  13. 如何用python编程编一个可以盗qq的_利用 Python 编写一个类似 QQ 截图的小工具应该怎么入手?...
  14. Web Directions South 2012的四个大创意
  15. python3中的@abstractmethod的用法
  16. 域 用户和计算机名,域环境中计算机名称解析
  17. js getday()获取值不对
  18. 文本分割之水平投影法基于OpenCV(python)版实现
  19. Simulink之S-function函数笔记之一
  20. 副业怎么样通过手游达到月入过万

热门文章

  1. 1.模态分析是什么?为什么采用模态分析?
  2. 南京大学计算机考研复试线2021,南京大学2021年考研复试基本分数线已发布
  3. Sicily 1031. Campus
  4. c语言版计算坐标方位角,坐标方位角算法在GIS中应用(最后修改).doc
  5. Could not execute JDBC batch update异常的解决办法
  6. 电子电路:电流镜电路
  7. 计算机科学与技术的心理测试考试,考试中的心理测评是什么?
  8. xcode快捷方式 一 快速找到对应文件
  9. 第二章:python必备基础语法
  10. keplergl,一款超炫的地理数据可视化神器!