浅析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 相关文章推荐
jquery $.ajax各个事件执行顺序
Oct 15 Javascript
Javascript浅谈之引用类型
Dec 18 Javascript
js函数参数设置默认值的一种变通实现方法
May 26 Javascript
JavaScript判断浏览器类型的方法
Feb 10 Javascript
谈谈我对JavaScript DOM事件的理解
Dec 18 Javascript
JS平滑无缝滚动效果的实现代码
May 06 Javascript
jQuery基于扩展实现的倒计时效果
May 14 Javascript
JavaScript Date对象应用实例分享
Oct 30 Javascript
详解javascript常用工具类的封装
Jan 30 Javascript
详解从Vue-router到html5的pushState
Jul 21 Javascript
Vue实现6位数密码效果
Aug 18 Javascript
JS实现提示效果弹出及延迟隐藏的功能
Aug 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
PHP面向对象编程快速入门
2006/10/09 PHP
Linux下ZendOptimizer的安装与配置方法
2007/04/12 PHP
php 伪造本地文件包含漏洞的代码
2011/11/03 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
2012/12/29 PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
2014/08/22 PHP
php readfile下载大文件失败的解决方法
2017/05/22 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
js获取IP和PcName(IE)在vs中可用
2013/08/02 Javascript
使用js操作cookie的一点小收获分享
2013/09/03 Javascript
Js操作Select大全(取值、设置选中等等)
2013/10/29 Javascript
jquery实现鼠标滑过小图查看大图的方法
2015/07/20 Javascript
跟我学习javascript的浮点数精度
2015/11/16 Javascript
JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解
2016/05/31 Javascript
JavaScript数据存储 Cookie篇
2016/07/02 Javascript
Node+Express+MongoDB实现登录注册功能实例
2017/04/23 Javascript
JavaScript对象拷贝与Object.assign用法实例分析
2018/06/20 Javascript
移动端底部导航固定配合vue-router实现组件切换功能
2019/06/13 Javascript
微信小程序实现侧边分类栏
2019/10/21 Javascript
JavaScript arguments.callee作用及替换方案详解
2020/09/02 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
2020/09/04 Javascript
[06:06]2018DOTA2亚洲邀请赛主赛事第四日战况回顾 全明星赛欢乐上演
2018/04/07 DOTA
Python自动发邮件脚本
2017/03/31 Python
Python使用 Beanstalkd 做异步任务处理的方法
2018/04/24 Python
python实现旋转和水平翻转的方法
2018/10/25 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
2019/06/05 Python
Pandas库之DataFrame使用的学习笔记
2019/06/21 Python
python访问hdfs的操作
2020/06/06 Python
用html5的canvas画布绘制贝塞尔曲线完整代码
2013/08/14 HTML / CSS
泰国折扣酒店预订:Hotels2Thailand
2018/03/20 全球购物
c/c++某大公司的两道笔试题
2014/02/02 面试题
销售个人求职信范文
2014/04/28 职场文书
学校百日安全生产活动总结
2014/07/05 职场文书
纪检干部个人对照检查材料
2014/09/23 职场文书
2015年校长新年寄语
2014/12/08 职场文书
父亲节寄语大全
2015/02/27 职场文书