浅析node连接数据库(express+mysql)


Posted in Javascript onNovember 30, 2015

操作是在ubuntu系统的下环境,简单记录一下过程。

首先用apt-get安装数据库,键入命令 sudo apt-get install mysql-server , 一路回车,然后在一个界面设置一下数据库root的密码就好了

在数据库里面我们需要创建一些东西。键入 mysql -uroot -p××××× 来进入sql控制台。

1.先创建数据集 create database databasename ;

2.use database databasename ;

3.建表(这里创建一个很简单的,只有自增id,用户名和密码)

create table user_info (                          
   id int(11) not null auto_increment,
   username varchar(30) not null,
   password varchar(30) not null,
   primary key ( id )
  )ENGINE=InnoDB DEFAULT CHARSET=utf8 ;

4.插入一条数据 insert into user_info values(1,'mtjss2','123456') ;

下面是node的部分

创建一个文件夹,比如叫myapp,在里面npm init之后就会也node_modules的依赖文件夹

用 npm install --save 安装如下依赖

1.express

2.mysql

3.body-parser(用来解析post参数)

由于express好像没有自己的数据库封装,所以一般会新建models文件夹,然后写数据库的逻辑,如果只是想简单测试可以直接写在app.js中

这里举例在models下有一个user.js的逻辑封装类,暂时只有一个通过username获取用户信息的方法,其他可以以后加

var mysql = require('mysql') ;                                                                                      
  //connection config
  var connection = mysql.createConnection({
    host : 'localhost' ,
    user : 'root' ,
    password : '123456' ,
    database : 'my_box'
 });
 function User(user){
   this.username = user.username ;
   this.password = user.password ;
 }
 User.getUserbyUsername = function(username,callback){
   var selectSql = 'select * from user_info where username = ?' ;
   connection.query(selectSql,[username],function(err,res){
   ¦  if(err){
   ¦  ¦  console.log('getUserbyUsername err:' + err) ;
   ¦  ¦  return ;
   ¦  }
   ¦  console.log('Get name success') ;
   ¦  callback(err,res) ;
   }) ;
 } ;
 module.exports = User ;

再贴一下app.js暂时没写路由,就是对/和/reg方法的处理

var mysql = require('mysql') ;                     
  //connection config
  var connection = mysql.createConnection({
    host : 'localhost' ,
    user : 'root' ,
    password : '123456' ,
    database : 'my_box'
  });
 function User(user){
   this.username = user.username ;
   this.password = user.password ;
 }
 User.getUserbyUsername = function(username,callback){
   var selectSql = 'select * from user_info where username = ?' ;
   connection.query(selectSql,[username],function(err,res){
   ¦  if(err){
   ¦  ¦  console.log('getUserbyUsername err:' + err) ;
   ¦  ¦  return ;
   ¦  }
   ¦  console.log('Get name success') ;
   ¦  callback(err,res) ;
   }) ;
 } ;
 module.exports = User ;

index.html这个主页面在views文件夹下,没什么代码,不过也贴一下

<!DOCTYPE html>
<html>
<head>
  <title>my box</title>
</head>
<body>
  <form action="/reg" method="post">
    <input type="text" name="username"/>
    <input type="submit" value="submit"/>
  </form>
</body>
</html>

这样用 node app.js 启动以后在浏览器里访问 localhost:3000就行了,在input里输入数据库中的用户名可以的得到那条数据。

ps:使用 Node.js 的优势和劣势都有哪些?

Node.js优点:1、采用事件驱动、异步编程,为网络服务而设计。其实Javascript的匿名函数和闭包特性非常适合事件驱动、异步编程。而且JavaScript也简单易学,很多前端设计人员可以很快上手做后端设计。2、Node.js非阻塞模式的IO处理给Node.js带来在相对低系统资源耗用下的高性能与出众的负载能力,非常适合用作依赖其它IO资源的中间层服务。3、Node.js轻量高效,可以认为是数据密集型分布式部署环境下的实时应用系统的完美解决方案。Node非常适合如下情况:在响应客户端之前,您预计可能有很高的流量,但所需的服务器端逻辑和处理不一定很多。

Node.js缺点:1、可靠性低2、单进程,单线程,只支持单核CPU,不能充分的利用多核CPU服务器。一旦这个进程崩掉,那么整个web服务就崩掉了。

Javascript 相关文章推荐
JavaScript中一个奇葩的IE浏览器判断方法
Apr 16 Javascript
JQuery 实现在同一页面锚点链接之间的平滑滚动
Oct 29 Javascript
js实现搜索框关键字智能匹配代码
Mar 26 Javascript
JavaScript中的各种操作符使用总结
May 26 Javascript
JQuery在循环中绑定事件的问题详解
Jun 02 Javascript
点击按钮出现60秒倒计时的简单js代码(推荐)
Jun 07 Javascript
在node.js中怎么屏蔽掉favicon.ico的请求
Mar 01 Javascript
seajs下require书写约定实例分析
May 16 Javascript
关于jquery中attr()和prop()方法的区别
May 28 jQuery
bootstrap 路径导航 分页 进度条的实例代码
Aug 06 Javascript
详解axios中封装使用、拦截特定请求、判断所有请求加载完毕)
Apr 09 Javascript
Node.js API详解之 assert模块用法实例分析
May 26 Javascript
javascript编程异常处理实例小结
Nov 30 #Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖动基本操作
Nov 30 #Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
Nov 30 #Javascript
javascript for-in有序遍历json数据并探讨各个浏览器差异
Nov 30 #Javascript
基于javascript如何传递特殊字符
Nov 30 #Javascript
基于js实现微信发送好友如何分享到朋友圈、微博
Nov 30 #Javascript
全面解析Bootstrap排版使用方法(文字样式)
Nov 30 #Javascript
You might like
用windows下编译过的eAccelerator for PHP 5.1.6实现php加速的使用方法
2007/09/30 PHP
php中的动态调用实例分析
2015/01/07 PHP
php实现模拟post请求用法实例
2015/07/11 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
2019/10/21 PHP
PHP CURL实现模拟登陆并上传文件操作示例
2020/01/02 PHP
网络之美 JavaScript中Get和Set访问器的实现代码
2010/09/19 Javascript
js滚动条回到顶部的代码
2011/12/06 Javascript
基于jQuery实现文本框缩放以及上下移动功能
2014/11/24 Javascript
JS函数的几种定义方式分析
2015/12/17 Javascript
AngularJS初始化静态模板详解
2016/01/14 Javascript
用jquery快速解决IE输入框不能输入的问题
2016/10/04 Javascript
BootStrap的select2既可以查询又可以输入的实现代码
2017/02/17 Javascript
基于JavaScript定位当前的地理位置
2017/04/11 Javascript
jquery实现回车键触发事件(实例讲解)
2017/11/21 jQuery
在vue中实现禁止屏幕滚动,禁止屏幕滑动
2020/07/22 Javascript
django接入新浪微博OAuth的方法
2015/06/29 Python
详解django的serializer序列化model几种方法
2018/10/16 Python
浅谈Python中的全局锁(GIL)问题
2019/01/11 Python
python实现替换word中的关键文字(使用通配符)
2020/02/13 Python
Django框架请求生命周期实现原理
2020/11/13 Python
python3定位并识别图片验证码实现自动登录功能
2021/01/29 Python
Foot Locker加拿大官网:美国知名运动产品零售商
2019/07/21 全球购物
经贸日语毕业生自荐信
2013/11/03 职场文书
教师个人鉴定材料
2014/02/08 职场文书
大学生简短的自我评价分享
2014/02/20 职场文书
学习雷锋做美德少年寄语大全
2014/04/09 职场文书
银行求职自荐书
2014/06/25 职场文书
元旦晚会活动总结
2014/07/09 职场文书
环境科学专业求职信
2014/08/04 职场文书
2014年林业工作总结
2014/12/05 职场文书
地球一小时活动总结
2015/02/27 职场文书
大学生心理健康活动总结
2015/05/08 职场文书
2015七夕情人节宣传语
2015/07/14 职场文书
pycharm无法导入lxml的解决办法
2021/03/31 Python
关于CSS浮动与取消浮动的问题
2021/06/28 HTML / CSS