node+express+mongDB實現簡單登入註冊

FengNianya發表於2019-02-16

exprss學習參考資料
npm 與 package.json 快速入門
MongoDB的資料庫和集合的基礎操作

安裝依賴包

` npm install express -save
npm install mongoose -save
`

編寫入口檔案

app.js:

var express = require(`express`)
var path = require("path")
var app=express()
var mongoose=require(`mongoose`)
require(`./Schemas/UserSchema.js`)
var User=mongoose.model(`u2`);//User為model name

var url = "mongodb://127.0.0.1:27017/nodejs";   //mongo是我的資料庫
var db = mongoose.connect(url);                     //連線資料庫

/**
 * 埠監聽
 */
var  server=app.listen(3000,function () {
    console.log("start");
})
//靜態檔案放在view裡
app.use(express.static(`view`));
// view engine setup
app.set(`views`, path.join(__dirname, `view`));
app.set(`view engine`, `html`);
// 拿出login的檢視
app.get(`/`,function(req,res){
    res.sendfile(__dirname+`/`+`view/login.html`)
})
//
// 登入的處理邏輯
//
app.get(`/login`,function(req,res){
    var name=req.query.name;
    var pwd=req.query.pwd;
    User.findOne({name:name,pwd:pwd},function(err,result){
        //把返回的值,傳入回撥函式
        if (result==null) {
            res.sendfile(__dirname+`/`+`view/no.html`);
        } else {
            res.sendfile(__dirname+`/`+`view/index.html`);
        }
    })

})

//註冊邏輯
//
app.get(`/register`,function(req,res){
    var name=req.query.name;
    var pwd=req.query.pwd;
    //通過model建立一個document
    var user=new User(
        {
        name: name,
        pwd: pwd
        }
    )
    //儲存到資料庫裡
//MongoDB 使用 insert() 或 save() 方法向集合中插入文件
//如果不指定 _id 欄位 save() 方法類似於 insert() 方法。如果指定 _id 欄位,則會更新該 _id 的資料。
user.save(function(err,result){
    if(result==null){
        res.sendfile(__dirname + "/" + "view/no.html" );
    }else {
        res.sendfile(__dirname + "/" + "view/register_OK.html" );}
})

})


資料庫的schema檔案 schemas/userSchema.js

clipboard.png

var mongoose = require(`mongoose`);
var UserSchema =new mongoose.Schema({
    //定義資料模型
    name:String,
    pwd:String
});
// 將這個User Schema,釋出為Model,第一個引數為資料庫的一個集合(表),沒有 會自動建立
mongoose.model(`u2`,UserSchema);

建立檢視檔案view

clipboard.png
eg:register.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>註冊</title>
</head>
<body>
    <form action="http://127.0.0.1:3000/register" >
        <p>
            <span>name:</span>
            <br>
            <input name="name" type="text">
        </p>
        <p>
            <span>password:</span>
            <br>
            <input  name="pwd" >
        </p>
        <p><input type="submit" value="submit"></p>
    </form>
</body>
</html>

login.html:

clipboard.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>登入</title>
</head>
<body>
    <h1>Hello World</h1>
<p>Welcome to</p>
<form action="http://127.0.0.1:3000/login" >
    <p>
        <span>name:</span>
        <br>
        <input name="name" type="text">
    </p>
    <p>
        <span>password:</span>
        <br>
        <input  name="pwd" >
    </p>
    <p><input type="submit" value="submit"></p>
</form>
<a href="./register.html">註冊</a>
</body>
</html>

成功了!看看我們的MongoDB資料庫(這裡用了視覺化工具)

clipboard.png

相關文章