Node数据库入门(登录注册功能)

1.安装

(1).mysql模块安装

npm i mysql -D

(2).co-msql模块安装(该模块不是一个独立的模块,而是mysql的封装,他可以把普通接连封装成一个可以做异步调用的连接)

npm i co-mysql -D

2.基础语句

  增 INSERT

  INSERT INTO  <TABLE>  (XX,XX)  VALUES  (VAL,VAL);

  INSERT INIT  user_table  (username,password)  VALUES  ('comedy','000000');

  删 DELETE

  DELETE FROM <TABLE> WHERE 条件;

  DELETE FROM user_table  WHERE ID=2;

  改 UPDATE

  UPDATE <TABLE>  SET  字段=新值,字段=新值,。。。  WHERE  条件;

  UPDATE user_table  SET password='000000' , username='comedy'  WHERE ID=2;

  查 SELECT

  SELECT 字段列表 FROM  <TABLE>  WHERE  条件  ORDER  BY  字段  LIMIT  30,30;

3.关于索引

  (1).索引是什么?

  比如说:“我们去图书馆找书,是直接快?还是现查目录快?索引就是充当数据目录的角色”。但方法都是有利有弊,索引在方便你查询的时候,也要牺牲磁盘的空间为代价。

  (2).索引分类

    普通索引:这是最基本的索引,它没有任何限制。

    唯一索引:它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。

    主键索引:它是一种特殊的唯一索引,不允许有空值。

    组合索引:列值的组合必须唯一。

     索引 ——提高查询性能、降低其他操作性能、更省空间。

    全文索引——适合文本搜索。

 4.贴代码

(1).版本1

  regist_login.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>Document</title>
    <script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-2.1.4.min.js"></script>
    <script>
      $(document).ready(()=>{
          $(".reg").click(async ()=>{
              let data=await $.ajax({
                  method:'get',
                  url:'http://localhost:8520/reg',
                  data:{
                      username:$(".username").val(),
                      password:$(".password").val()
                  }
              });
              alert(data);
          });
          $(".login").click(async ()=>{
              let data=await $.ajax({
                  method:'get',
                  url:'http://localhost:8520/login',
                  data:{
                      username:$(".username").val(),
                      password:$(".password").val()
                  }
              });
          });
      });  
    </script>
</head>
<body>
    <input type="text" class="username" />
    <input type="password" class="password" />
    <button class="reg">注册</button>
    <button class="login">登录</button>
</body>
</html>
View Code

  node_sql.js

const http=require('http');
const mysql=require('mysql');
const url=require('url');
const fs=require('fs');

// 1.连接到服务器
let db=mysql.createConnection({
    host:'localhost',
    port:3306,
    user:'root',
    password:'',
    database:'node_sql'
})

if(db){console.log('sql success');}

// 2.配合http
http.createServer( (req,res)=>{
    const {pathname,query}=url.parse(req.url,true);
    let{username,password}=query;
    if(pathname=='/reg'){   //用户想注册
        if(!username || !password){
            res.write('用户名和密码不能为空');
            res.end();
        }else if(username.length>32){
            res.write('用户名最大32个字');
            res.end();
        }else{
            db.query(`SELECT ID FROM user WHERE username='${username}'`,(err,data)=>{
                if(err){
                    res.write('数据库有错');
                    res.end();
                }else if(data.length>0){
                    res.write('用户名已被注册');
                    res.end();
                }else{
                    db.query(`INSERT INTO user (username,password,nickname) VALUES ('${username}','${password}','placeholder')`,(err,data)=>{
                        if(err){
                            res.write('数据库有错');
                            res.end();
                        }else{
                            res.write('注册成功');
                            res.end();
                        }
                    })
                }
            })
        }
        
    }else if(pathname=='/login'){   //用户登录
        if(!username || !password){
            res.write('用户名和密码不能为空');
            res.end();
        }else{
            db.query(`SELECT ID FROM user WHERE username='${username}'`,(err,data)=>{
                if(err){
                    res.write('数据库有错');
                    res.end();
                }else if(data.length<=0){
                    res.write('用户名不存在');
                    res.end();
                }else{
                    db.query(`SELECT password FROM user where username='${username}'`,(err,data)=>{
                        if(err){
                            res.write('数据库有错');
                            res.end();
                        }else {
                            if(data[0].password!=password){
                                res.write('密码错误');
                                res.end();
                            }else{
                                res.write('登录成功');
                                res.end();
                            }
                        }
                    })
                }
            })
        }
    }else{
        fs.readFile(`www${pathname}`,(err,buffer)=>{
            console.log(err,buffer);
            if(err){
                res.writeHeader(404);
                res.write('NOT FOUND');
            }else{
                res.write(buffer);
            }
            res.end();
        })
    }
}).listen(8520,()=>{
    console.log("node_sql  action");
});
View Code

(2).版本2——co-mysql

  node_co_sql.js

const http=require('http');
const mysql=require('mysql');
const co=require('co-mysql');
const url=require('url');
const fs=require('fs');

//1.连接到服务器:连接池
    let conn=mysql.createPool({
        connectionLimit:10, //最大连接数,默认为10,不要太多,太多会加重数据库负担
        host:'localhost',
        port:3306,
        user:'root',
        password:'',
        database:'node_sql'
    })
    let db=co(conn);    //co-mysql

// 2.配合http
http.createServer(async (req,res)=>{
    const {pathname,query}=url.parse(req.url,true);
    let{username,password}=query;
    if(pathname=='/reg'){   //用户想注册
        if(!username || !password){
            res.write('用户名和密码不能为空');
            res.end();
        }else if(username.length>32){
            res.write('用户名最大32个字');
            res.end();
        }else{
            try {
                let data = await db.query(`SELECT ID FROM user WHERE username='${username}'`);
                if(data.length>0){
                    res.write('用户名已被注册');
                    res.end();
                }else{
                    await db.query(`INSERT INTO user (username,password,nickname) VALUES ('${username}','${password}','placeholder')`);
                    res.write('注册成功');
                }
            } catch (error) {
                res.write('数据库出错');
            }
            res.end();
        }
    }else if(pathname=='/login'){   //用户登录
        if(!username || !password){
            res.write('用户名和密码不能为空');
            res.end();
        }else{
            try{
                let data = await db.query(`SELECT ID FROM user WHERE username='${username}'`);
                if(data.length<=0){
                    res.write('用户名不存在');
                }else{
                    let pwd = await db.query(`SELECT password FROM user WHERE username='${username}'`);
                    if(pwd[0].password!=password){
                        res.write('密码错误');
                    }else{
                        res.write('登陆成功');
                    }
                }
            }catch(error){
                res.write('数据库出错');
            }
            res.end();
        }
    }else{
        fs.readFile(`www${pathname}`,(err,buffer)=>{
            console.log(err,buffer);
            if(err){
                res.writeHeader(404);
                res.write('NOT FOUND');
            }else{
                res.write(buffer);
            }
            res.end();
        })
    }
}).listen(8520,()=>{
    console.log("node_co_sql  action");
});
View Code

猜你喜欢

转载自www.cnblogs.com/comedy/p/11785001.html