用node和express连接mysql实现登录注册的实现代码

首先我们需要确保已经安装好Node和MySQL,并且已经创建好了相应的数据库和数据表。

  1. 创建Express工程

首先,我们需要创建一个新的Express应用程序,可以通过执行以下命令进行创建:

$ npm install -g express-generator
$ express myapp
$ cd myapp
$ npm install

这样就可以创建一个名为 myapp 的Express应用程序,并且安装了相关的依赖包。

  1. 安装MySQL模块

接下来,我们需要安装 mysql 模块来连接MySQL数据库。可以通过以下命令进行安装:

$ npm install mysql --save
  1. 连接MySQL数据库

app.js 文件中添加以下代码,连接数据库,并且导出数据库连接的对象 pool

const mysql = require('mysql');

const pool = mysql.createPool({
  connectionLimit: 10,
  host: 'localhost',
  user: 'root',
  password: 'password',
  database: 'myapp'
});

module.exports = pool;

在上面的代码中,我们创建了一个连接池,设置了最大连接数、主机名、用户名、密码、数据库名等信息,并且将其导出。

  1. 实现用户注册

首先,我们需要创建一个注册路由,接收从客户端传来的用户名和密码,并且将其插入到数据库中。可以在 routes 目录下的 users.js 文件中添加以下代码:

const express = require('express');
const router = express.Router();
const pool = require('../app');

router.post('/register', (req, res) => {
  const username = req.body.username;
  const password = req.body.password;

  pool.getConnection((err, connection) => {
    if (err) {
      res.status(500).send('Database Error');
      return;
    }

    const query = `INSERT INTO users (username, password) VALUES ('${username}', '${password}')`;

    connection.query(query, (error, results, fields) => {
      connection.release();

      if (error) {
        res.status(500).send('Database Error');
        return;
      }

      res.status(200).send('Success');
    });
  });
});

module.exports = router;

在上面的代码中,我们使用 POST 方法来处理客户端发来的注册请求,在注册请求中,我们从请求体中获取了用户名和密码,然后插入到数据库中,如果插入成功,则返回一个成功的响应状态码和消息。

  1. 实现用户登录

接下来,我们需要实现用户登录功能。可以在 routes 目录下的 users.js 文件中添加以下代码:

router.post('/login', (req, res) => {
  const username = req.body.username;
  const password = req.body.password;

  pool.getConnection((err, connection) => {
    if (err) {
      res.status(500).send('Database Error');
      return;
    }

    const query = `SELECT * FROM users WHERE username = '${username}' AND password = '${password}'`;

    connection.query(query, (error, results, fields) => {
      connection.release();

      if (error) {
        res.status(500).send('Database Error');
        return;
      }

      if (results.length === 0) {
        res.status(401).send('Unauthorized');
        return;
      }

      res.status(200).send('Success');
    });
  });
});

在上面的代码中,我们使用 POST 方法来处理客户端发来的登录请求,在登录请求中,我们从请求体中获取了用户名和密码,然后查询数据库,如果用户名和密码正确,则返回一个成功的响应状态码和消息,否则返回401未授权的响应。

示例1:实现用户注册

客户端代码(使用Fetch API):

fetch('/users/register', { 
  method: 'POST', 
  headers: { 
    'Content-Type': 'application/json' 
  },
  body: JSON.stringify({
    username: 'test',
    password: '123456'
  })
})
.then(response => {
  if (response.ok) {
    console.log('注册成功');
  } else {
    console.error('注册失败');
  }
})
.catch(error => {
  console.error('网络错误');
});

示例2:实现用户登录

客户端代码(使用jQuery):

$.ajax({
  url: '/users/login',
  type: 'POST',
  dataType: 'json',
  data: { 
    username: 'test', 
    password: '123456' 
  },
  success: function(data) {
    console.log('登录成功');
  },
  error: function(xhr, textStatus, error) {
    console.error('登录失败');
  }
});

以上就是使用Node和Express连接MySQL实现登录注册的实现代码的攻略。需要注意的是,在实际应用中,我们需要对用户输入的密码进行加密处理,保证用户的数据安全。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用node和express连接mysql实现登录注册的实现代码 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • MySQL实现当前数据表的所有时间都增加或减少指定的时间间隔(推荐)

    实现当前数据表的所有时间都增加或减少指定的时间间隔,可以使用MySQL的时间日期函数和更新语句实现。 步骤如下: 进入MySQL命令行或者使用可视化工具连接数据库。 执行以下SQL语句,创建一个测试表: sql create table test( id int primary key auto_increment, name varchar(20), cr…

    database 2023年5月22日
    00
  • CentOS6.7系统中编译安装MariaDB数据库

    下面是CentOS6.7系统中编译安装MariaDB数据库的完整攻略: 安装必要的依赖库和软件 首先需要安装对应的依赖库和软件: yum -y update yum -y groupinstall "Development tools" yum -y install cmake ncurses-devel libxml2-devel zl…

    database 2023年5月22日
    00
  • cmd中MySQL中文数据乱码问题解决方法

    下面是详细讲解“cmd中MySQL中文数据乱码问题解决方法”的完整攻略。 问题背景 在使用cmd命令行窗口操作MySQL数据库时,有时会遇到中文数据乱码问题,这主要是由于cmd默认使用的编码格式为gbk,而MySQL默认使用的编码格式为utf8,两者不兼容所导致的。 解决方法 (以下操作均在cmd命令行窗口中进行) 1. 修改MySQL客户端默认编码格式为g…

    database 2023年5月18日
    00
  • Hadoop和MongoDB的区别

    Hadoop和MongoDB都是非关系型数据库。Hadoop是一个高可用性的分布式文件系统,支持大量数据的存储,以及数据的处理和管理。而MongoDB是一个面向文档存储的NoSQL数据库,具备稳定性,性能和可扩展性。下面着重从以下几个方面来讲解Hadoop和MongoDB的区别: 数据的存储 Hadoop存储数据使用的是Hadoop分布式文件系统(HDFS)…

    database 2023年3月27日
    00
  • 详解MySQL使用GROUP BY分组查询

    MySQL中GROUP BY语句用于将数据行按照一个或多个列进行分组,然后对每个组进行聚合计算。在GROUP BY语句中,可以使用聚合函数对每个组进行计算,例如SUM、AVG、MAX、MIN、COUNT等。 以下是GROUP BY语句的一般语法: SELECT column1, column2, …, aggregate_function(column_…

    MySQL 2023年3月9日
    00
  • MySQL 子查询和分组查询

    MySQL 子查询和分组查询是 SQL 语言中非常重要的两个查询方式,本篇攻略将详细讲解这两种查询方法的使用和应用场景。 子查询 子查询也称为内查询,是指在一个 SQL 语句中嵌套了另一个 SELECT 语句,通常用来做为外查询的限定条件。 基本语法 子查询的基本语法如下: SELECT column FROM table WHERE column oper…

    database 2023年5月22日
    00
  • phpstudy升级mysql版本到5.7 ,重启mysql不启动

    phpstudy中mysql升级后MySQL服务无法启动 问题产生: 安装好phpstudy后,升级了MySQL后,通过phpstudy启动,Apache可以启动,Mysql无法启动。 解决方法: 之前已经装过Mysql,要把系统服务里面的MySQL删除,留下MySQLa服务。 在cmd命令行下输入:sc delete mysql 即可删除。 步骤: 一、备…

    MySQL 2023年4月13日
    00
  • Oracle中获取执行计划的几种方法分析

    下面我将详细讲解“Oracle中获取执行计划的几种方法分析”的完整攻略。 什么是执行计划 在Oracle数据库中,执行SQL语句时,Oracle会自动生成一种称为“执行计划(Execution Plan)”的执行路径,它会告诉我们数据库是如何处理SQL语句的。执行计划的生成过程需要考虑很多因素,如表、索引的大小、数据分布情况、查询条件、SQL语句的结构等。获…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部