原文連接
準備
在開始做這個前,希望你已經配置好的Node,express和MySQL的開發環境。也可以參考參考文章
開發環境的配置
新建項目 參考Mac下express的安裝和新建項目 mysql模塊 在package.json文件的dependencies下加入下面的代碼"mysql": "latest", 最終的效果: 然后cd到項目所在的目錄,在終端中執行npm install,項目就會配置mysql模塊。 新建數據庫配置文件 在項目目錄下新建一個db目錄,在目錄項新建兩個文件DBConfig.js和usersql.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依賴
var dbConfig =
require (
'../db/DBConfig' );
var User =
require (
'../db/usersql' );
var mysql =
require (
'mysql' );
var client = mysql.createConnection(dbConfig.mysql);
首先看看注冊流程: 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去數據庫查找 數據庫的某個用戶的openid和這個相等就返回注冊成功 數據庫沒有就,跳轉到綁定頁面,做綁定用戶名的操作 這里,為了前臺能夠判斷用戶是否綁定了,我給了一個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 {
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仿美团注册登录绑定第三方登录 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。