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','');
删 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数据库入门(登录注册功能)的更多相关文章
- Node.js实现登录注册功能
使用Node.js + Navicat for mysql实现的登录注册功能 数据库中存在有”user_id,user_name,password,user_img,user_number“字段,其中 ...
- vue koa2 mongodb 从零开始做个人博客(一) 登录注册功能前端部分
0.效果演示 插入视频插不进来,就很烦.可以出门右拐去优酷看下(点我!). 1.准备工作 1.1前端框架 前端使用了基于vue.js的nuxt.js.为什么使用nuxt.js? 首先我做的是博客的项目 ...
- Java Spring+Mysql+Mybatis 实现用户登录注册功能
前言: 最近在学习Java的编程,前辈让我写一个包含数据库和前端的用户登录功能,通过看博客等我先是写了一个最基础的servlet+jsp,再到后来开始用maven进行编程,最终的完成版是一个 Spri ...
- flask 开发用户登录注册功能
flask 开发用户登录注册功能 flask开发过程议案需要四个模块:html页面模板.form表单.db数据库操作.app视图函数 1.主程序 # app.py # Auther: hhh5460 ...
- JAVAEE_Servlet_20_登录注册功能
实现登录注册功能 注册功能 import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import j ...
- SSM 实现登录注册功能
1.上一篇SSM框架搭建好了之后就要开始写功能了,现在来写一个简单的登录注册功能 这几个包是自己手动创建的,然后往里面写代码 2.代码详情 package com.maike.controller; ...
- 一个关于vue+mysql+express的全栈项目(三)------ 登录注册功能的实现(已经密码安全的设计)
本系列文章,主要是一个前端的视角来实现一些后端的功能,所以不会讲太多的前端东西,主要是分享做这个项目学到的一些东西,,,,, 好了闲话不多说,我们开始搭建后端服务,这里我们采用node的express ...
- JAVAEE——宜立方商城11:sso登录注册功能实现、通过token获得用户信息、Ajax跨域请求(jsonp)
1. 学习计划 第十一天: 1.sso注册功能实现 2.sso登录功能实现 3.通过token获得用户信息 4.Ajax跨域请求(jsonp) 2. Sso系统工程搭建 需要创建一个sso服务工程,可 ...
- PHP实现用户登录注册功能
初学php做了一些比较常见且有用的页面,放在上面记录一下咯 我是用了bootstrap框架里面的模态框做注册登陆页面,这样页面比较美观 页面效果: 注册成功条件/功能: 1)用户名不能冲突 2)两次密 ...
随机推荐
- laravel各种请求类
curl请求类 composer require php-curl-class/php-curl-class
- PHP mysqli_more_results() 函数
定义和用法 mysqli_more_results() 函数检查一个多查询是否有更多的结果. 语法 mysqli_more_results(connection); 参数 描述 connection ...
- 实体类 @TableName&@TableField&@Version
//指向表table_biao @TableName("table_biao)public class UserThirdLogin extends Model<UserThirdLo ...
- 二维FFT,IFFT,c语言实现
学习DIP第6天 完整内容迁移至http://www.face2ai.com/DIP-2-4-二维FFT-IFFT-c语言实现/ http://www.tony4ai.com/DIP-2-4-二维FF ...
- neo4j 一些常用的CQL
创建节点.关系 创建节点(小明):create (n:people{name:’小明’,age:’18’,sex:’男’}) return n; 创建节点(小红): create (n:people{ ...
- requests_html使用asyncio
import asyncio import functools from concurrent.futures.thread import ThreadPoolExecutor from reques ...
- Qt多线程应用--QRunnable
http://blog.csdn.net/lefttime/article/details/5717349 作为Qt类中少有的基类, QRunnable提供了简洁有效的可运行对象的创建. 用QRun ...
- selenium 右侧滚动条操作
对于web上有右侧滚动条的操作 可用使用JS语句执行 拖到底部 js = "var q=document.documentElement.scrollTop=10000"brows ...
- socket.io 的使用
socket.io 是对 websocket 的封装,当你在客户端使用 socket.io 那么服务器也要对应的使用 目录结构: 使用方法: 客户端: socket.emit() 是提交数据,sock ...
- spark MLlib的 pipeline方式
spark mllib的pipeline,是指将多个机器学习的算法串联到一个工作链中,依次执行各种算法. 在Pipeline中的每个算法被称为"PipelineStage",表示其 ...