Node.js实现前后端交互——用户注册

  我之前写过一篇关于使用Node.js作为后端实现用户登陆的功能,现在再写一下node.js做后端实现简单的用户注册实例吧。另外需要说的是,上次有大佬提醒需要加密数据传输,不应该使用明文传输用户信息。在实际的开发中,也强烈建议大家做数据加密操作。ps:这里为了演示,就不做数据加密了。好了,现在开始我们的小项目。

一、项目需求

  要求用户进入用户注册界面,填写用户名和密码后,提交到数据库保存。注册后的账户可用于登陆。ps:关于用户名和用户密码审核这些的就不写了,这里只写一些核心功能需求的代码。

二、开始撸代码

  1,创建前端代码,登录页register.html

<div>
            <form method="post" action="http://localhost:8080/">
                <input type="text" required="required" id="set_name" placeholder="请填写用户名" name="set_name">
                <input type="password" required="required" id="set_pwd" placeholder="请填写密码" name="set_pwd">
                <input type="password" required="required" id="check_pwd" placeholder="请再次填写密码" name="check_pwd">
                <br>
                <input type="reset" class="reset_but" value="重写填写">
                <input type="submit" class="register_but" value="确认注册">
            </form>
</div>

创建登陆表单,此处的提交方式为post,提交地址为自己的主机,因为我是做的本地测试环境。

  2、Node.js后端获取用户数据

  (1)引入模块,此时需要你的电脑上面以及安装了Node.js环境,安装方法请自行百度。

// 引入http模块
const http = require('http');
//引入处理请求参数模块
const queryString = require('querystring');//调用自定义封装的链接数据库模块
const connection = require("./mysql.js");

此处的自定义封装数据库模块我会在后面给出,读者也可以参考我上一篇:Node.js实现前后端交互——用户登陆的博客。

  (2)获取用户提交的用户名和密码,并保存到MySQL数据库

//定义sever是网站服务器对象
let sever = http.createServer();
//为服务器对象绑定请求事件,当客户端有请求时触发
sever.on('request', function (request, response) {
    /* POST参数是通过事件的方式接收的
    * data  当请求参数传递的时候触发的事件
    * end   当参数传递完成的时候触发end事件
    */
    let postParams = '';  //定义空字符串用于接收post参数
//绑定data触发事件
    request.on('data', function (params) {
        postParams = postParams + params;     //拼接post参数
    });
//绑定data触发事件
    request.on('end', function () {
 // 把postParams字符串处理为对象,用querystring模块中的parse()方法
        //获取前端表单的具体数据,如set_name。注意:此处的set_name一定要和前端表单中的name属性一致
        let username = queryString.parse(postParams).set_name;
        let userpwd = queryString.parse(postParams).set_pwd;
// 添加数据添加实例,使用SQL语句
        let addSql = 'INSERT INTO userinfo (userName,userPwd) VALUES(?,?)';
        let addSqlParams = [username, userpwd];
        connection.query(addSql, addSqlParams, function (result, fields) {
            console.log('添加成功!')
        });
    });
    response.end('恭喜!注册成功!');  //返回响应
});
// 监听端口
sever.listen(8080);
console.log("服务器启动成功!");

  正如大家看到的,代码中的注释已经很详细。给出思路:后端获取用户填写完并提交的表单数据,将表单数据添加到数据库的数据表。这里给出数据表供参考。

看一下我预先准备好的数据库中的数据表。数据库名test(后面数据库封装的配置项里可以看到),数据表名userinfo

 

 

  (3)使用到的封装数据库,看过我上一篇博文的读者可以忽略下面的内容。(因为这里和上一篇是一样的哈哈哈)

 

 

因为如果在使用中每次都写一堆代码用于数据库链接之类的操作,机会显得很冗余,于是我参考其他博友的代码对数据库链接操作分为两个文件进行封装。

数据库配置封装文件 mysql.config.js

 

复制代码
//配置链接数据库参数
module.exports = {
    host: 'localhost',
    port: 3306,//端口号
    database: 'test',//数据库名
    user: 'root',//数据库用户名
    password: '123456'//数据库密码
};
复制代码

 

数据库链接封装文件 mysql.js

 

复制代码
let mysql = require('mysql');//引入mysql模块
let databaseConfig = require('./mysql.config');  //引入数据库配置模块中的数据
//向外暴露方法
module.exports = {
    query: function (sql, params, callback) {
        //每次使用的时候需要创建链接,数据操作完成之后要关闭连接
        let connection = mysql.createConnection(databaseConfig);
        connection.connect(function (err) {
            if (err) {
                console.log('数据库链接失败');
                throw err;
            }
            //开始数据操作
            //传入三个参数,第一个参数sql语句,第二个参数sql语句中需要的数据,第三个参数回调函数
            connection.query(sql, params, function (err, results, fields) {
                if (err) {
                    console.log('数据操作失败');
                    throw err;
                }
                //将查询出来的数据返回给回调函数
                callback && callback(results, fields);
                //results作为数据操作后的结果,fields作为数据库连接的一些字段
                //停止链接数据库,必须再查询语句后,要不然一调用这个方法,就直接停止链接,数据操作就会失败
                connection.end(function (err) {
                    if (err) {
                        console.log('关闭数据库连接失败!');
                        throw err;
                    }
                });
            });
        });
    }
};
复制代码

 

上面的两个文件已经在数据库查询实例中const connection = require("./mysql.js");调用了。

 

 

至此,我们的Node.js作为后端实现用户注册的功能已经实现了。当然,在实际的生产环境中,还有许多的地方需要修改,比如数据安全传输,用户注册的信息检测等等。

 

posted @ 2021-11-30 20:17  莫颀  阅读(1114)  评论(0编辑  收藏  举报