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作為後端實現使用者註冊的功能已經實現了。當然,在實際的生產環境中,還有許多的地方需要修改,比如資料安全傳輸,使用者註冊的資訊檢測等等。