1. 程式人生 > >nodejs+mongodb寫的一個簡單的登入註冊

nodejs+mongodb寫的一個簡單的登入註冊

自己自學Nodejs 中   隨便寫著玩的  沒學到資料集過濾 就自己想了個笨辦法

還不完善 自己練手了

----------------------------------------------------------------------以下是伺服器程式碼   server.js---------------------------------------------------------------------------

var express = require('express');
var app = express();
var MongoClient = require('mongodb').MongoClient;


app.get('/', function(req, res){
    res.type('.html')
    res.sendFile(__dirname + "/" + "index.html")
})


/*註冊功能*/
app.get('/process_get', function(req, res){
    res.type('.html')
    respose={
        name:req.query.name,
        password:req.query.password
    }
/**/
    function addUser(collection, db){
        collection.insert(db, function(err, results){
            if(!err){
                console.log(results)
            }
        })
    }
    MongoClient.connect("mongodb://dbadmin:

[email protected]:27017/admin", function(err, db){
        var myDB = db.db("users");
        myDB.collection("userCollection", function(err, ncoll){
             //ncoll.remove({user_name:"ceshi"}, function(err, results){}    )
        ncoll.find({user_name:respose.name}, function(err, items){
            items.toArray(function(err, item){
                console.log(item.length) //通過查詢出的陣列長度去判斷
                if(item.length < 1){
                    addUser(ncoll, { user_name:respose.name, user_padd:respose.password})
                    res.end("您已註冊成功!")
                } else{
                    res.end("對不起,使用者名稱重複,你再想想唄~")
                    
                }
                
            })
        })
        })
    })

})
/*註冊功能*/
/*登入功能*/
app.get('/user_get', function(req, res){

    respose = {
        name:req.query.name,
        password:req.query.password
    }
    // console.log(respose.name)
    MongoClient.connect("mongodb://dbadmin:
[email protected]
:27017/admin", function(err, db){   //這裡要輸入你的資料庫管理賬戶密碼

   var myDB = db.db("users");
        myDB.collection("userCollection", function(err, ncoll){
            ncoll.find(function(err, items){
                items.toArray(function(err, item){
                    //console.log("biao" + JSON.stringify(item))

                })
            })
            // console.log(respose.name)
            ncoll.find({user_name:respose.name}, function(err, items){
                if(err){
                    console.log(err)
                }
                items.toArray(function(err, item){
                    console.log(item[0].user_padd)
                    if(respose.password == item[0].user_padd){
                        console.log("password" +respose.password == item[0].user_padd)
                        res.type('.html');
                        res.end("歡迎您" + respose.name)
                    }
                    else {
                        res.type(".html");
                        res.end("對不起,您輸入的密碼不正確")
                    }
                })
            })
        })
    })
})
/*登入功能結束*/


app.listen(3001)

----------------------------------------------------------------------以上是伺服器程式碼   server.js---------------------------------------------------------------------------

----------------------------------------------------------------------以下是html程式碼 index.html-----------------------------------------------------------------------------



<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>zhuce</title>
</head>
<body>
    <form action="http://localhost:3001/process_get">
        <span>您的暱稱:</span><input type="text" name="name">
        <p></p>
        <span>您的密碼</span><input type="text" name="password">
        <p></p>
        <input type="submit" value="註冊">
    </form>
    <p></p>
    <form action="http://localhost:3001/user_get">
        <span>您的暱稱:</span><input type="text" name="name">
        <p></p>
        <span>您的密碼</span><input type="text" name="password">
        <p></p>
        <input type="submit" value="登入">
    </form>

</body>
</html>

----------------------------------------------------------------------以下是遇到的坑 ---------------------------------------------------------------------------


1、mongoose登入的話  需要你的資料庫管理員賬戶密碼

2、res.type('.html) 最好提前 不然會因為非同步的問題 造成先輸出send 後設置header的問題

3、toArray() 方法可以變成陣列 方便JSON處理  而 each()方法你自己試試- -

4、以後遇到了再補充吧




-----------------------------------------------------------我還比較菜  不對的地方輕噴   還有我寫這個的時候沒有學到資料集的過濾  -------------------------------------------------------------------------

我寫這個的時候沒有學到資料集的過濾!

我寫這個的時候沒有學到資料集的過濾!

我寫這個的時候沒有學到資料集的過濾!


自己也比較菜   - -  就當是學習筆記