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作為后端實現用戶注冊的功能已經實現了。當然,在實際的生產環境中,還有許多的地方需要修改,比如數據安全傳輸,用戶注冊的信息檢測等等。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM