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','');

  删 DELETE

  DELETE FROM <TABLE> WHERE 条件;

  DELETE FROM user_table  WHERE ID=;

  改 UPDATE

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

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

  查 SELECT

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

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>

  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:,
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>){
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>){
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<=){
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[].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();
res.write('NOT FOUND');
}else{
res.write(buffer);
}
res.end();
})
}
}).listen(,()=>{
console.log("node_sql action");
});

(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,不要太多,太多会加重数据库负担
host:'localhost',
port:,
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>){
res.write('用户名最大32个字');
res.end();
}else{
try {
let data = await db.query(`SELECT ID FROM user WHERE username='${username}'`);
if(data.length>){
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<=){
res.write('用户名不存在');
}else{
let pwd = await db.query(`SELECT password FROM user WHERE username='${username}'`);
if(pwd[].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();
res.write('NOT FOUND');
}else{
res.write(buffer);
}
res.end();
})
}
}).listen(,()=>{
console.log("node_co_sql action");
});

Node数据库入门(登录注册功能)的更多相关文章

  1. Node.js实现登录注册功能

    使用Node.js + Navicat for mysql实现的登录注册功能 数据库中存在有”user_id,user_name,password,user_img,user_number“字段,其中 ...

  2. vue koa2 mongodb 从零开始做个人博客(一) 登录注册功能前端部分

    0.效果演示 插入视频插不进来,就很烦.可以出门右拐去优酷看下(点我!). 1.准备工作 1.1前端框架 前端使用了基于vue.js的nuxt.js.为什么使用nuxt.js? 首先我做的是博客的项目 ...

  3. Java Spring+Mysql+Mybatis 实现用户登录注册功能

    前言: 最近在学习Java的编程,前辈让我写一个包含数据库和前端的用户登录功能,通过看博客等我先是写了一个最基础的servlet+jsp,再到后来开始用maven进行编程,最终的完成版是一个 Spri ...

  4. flask 开发用户登录注册功能

    flask 开发用户登录注册功能 flask开发过程议案需要四个模块:html页面模板.form表单.db数据库操作.app视图函数 1.主程序 # app.py # Auther: hhh5460 ...

  5. JAVAEE_Servlet_20_登录注册功能

    实现登录注册功能 注册功能 import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import j ...

  6. SSM 实现登录注册功能

    1.上一篇SSM框架搭建好了之后就要开始写功能了,现在来写一个简单的登录注册功能 这几个包是自己手动创建的,然后往里面写代码 2.代码详情 package com.maike.controller; ...

  7. 一个关于vue+mysql+express的全栈项目(三)------ 登录注册功能的实现(已经密码安全的设计)

    本系列文章,主要是一个前端的视角来实现一些后端的功能,所以不会讲太多的前端东西,主要是分享做这个项目学到的一些东西,,,,, 好了闲话不多说,我们开始搭建后端服务,这里我们采用node的express ...

  8. JAVAEE——宜立方商城11:sso登录注册功能实现、通过token获得用户信息、Ajax跨域请求(jsonp)

    1. 学习计划 第十一天: 1.sso注册功能实现 2.sso登录功能实现 3.通过token获得用户信息 4.Ajax跨域请求(jsonp) 2. Sso系统工程搭建 需要创建一个sso服务工程,可 ...

  9. PHP实现用户登录注册功能

    初学php做了一些比较常见且有用的页面,放在上面记录一下咯 我是用了bootstrap框架里面的模态框做注册登陆页面,这样页面比较美观 页面效果: 注册成功条件/功能: 1)用户名不能冲突 2)两次密 ...

随机推荐

  1. laravel各种请求类

    curl请求类 composer require php-curl-class/php-curl-class

  2. PHP mysqli_more_results() 函数

    定义和用法 mysqli_more_results() 函数检查一个多查询是否有更多的结果. 语法 mysqli_more_results(connection); 参数 描述 connection ...

  3. 实体类 @TableName&@TableField&@Version

    //指向表table_biao @TableName("table_biao)public class UserThirdLogin extends Model<UserThirdLo ...

  4. 二维FFT,IFFT,c语言实现

    学习DIP第6天 完整内容迁移至http://www.face2ai.com/DIP-2-4-二维FFT-IFFT-c语言实现/ http://www.tony4ai.com/DIP-2-4-二维FF ...

  5. neo4j 一些常用的CQL

    创建节点.关系 创建节点(小明):create (n:people{name:’小明’,age:’18’,sex:’男’}) return n; 创建节点(小红): create (n:people{ ...

  6. requests_html使用asyncio

    import asyncio import functools from concurrent.futures.thread import ThreadPoolExecutor from reques ...

  7. Qt多线程应用--QRunnable

    http://blog.csdn.net/lefttime/article/details/5717349 作为Qt类中少有的基类, QRunnable提供了简洁有效的可运行对象的创建.  用QRun ...

  8. selenium 右侧滚动条操作

    对于web上有右侧滚动条的操作 可用使用JS语句执行 拖到底部 js = "var q=document.documentElement.scrollTop=10000"brows ...

  9. socket.io 的使用

    socket.io 是对 websocket 的封装,当你在客户端使用 socket.io 那么服务器也要对应的使用 目录结构: 使用方法: 客户端: socket.emit() 是提交数据,sock ...

  10. spark MLlib的 pipeline方式

    spark mllib的pipeline,是指将多个机器学习的算法串联到一个工作链中,依次执行各种算法. 在Pipeline中的每个算法被称为"PipelineStage",表示其 ...