浅析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 自定义函数写法分享
Mar 30 Javascript
删除select中所有option选项jquery代码
Aug 12 Javascript
浅谈关于JavaScript API设计的一些建议和准则
Jun 24 Javascript
js拖拽的原型声明和用法总结
Apr 04 Javascript
jquery实现上传文件大小类型的验证例子(推荐)
Jun 25 Javascript
使用Javascript判断浏览器终端设备(PC、IOS(iphone)、Android)
Jan 04 Javascript
vue watch自动检测数据变化实时渲染的方法
Jan 16 Javascript
jquery引入外部CDN 加载失败则引入本地jq库
May 23 jQuery
详解微信小程序与内嵌网页交互实现支付功能
Oct 22 Javascript
微信小程序自定义可滑动顶部TabBar选项卡实现页面切换功能示例
May 14 Javascript
javascript实现弹出层效果
Dec 10 Javascript
Element Collapse 折叠面板的使用方法
Jul 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类中Static方法效率测试代码
2010/10/17 PHP
Php中使用Select 查询语句的实例
2014/02/19 PHP
完整删除ecshop中获取店铺信息的API
2014/12/24 PHP
php+mysql实现无限级分类
2015/11/11 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
javascript + jquery实现定时修改文章标题
2014/03/19 Javascript
jquery中push()的用法(数组添加元素)
2014/11/25 Javascript
用jQuery向div中添加Html文本内容的简单实现
2016/07/13 Javascript
Jil,高效的json序列化和反序列化库
2017/02/15 Javascript
Ext JS 实现建议词模糊动态搜索功能
2017/05/13 Javascript
老生常谈javascript的面向对象思想
2017/08/22 Javascript
浅谈webpack下的AOP式无侵入注入
2017/11/12 Javascript
浅谈VUE监听窗口变化事件的问题
2018/02/24 Javascript
jQuery实现的鼠标拖动浮层功能示例【拖动div等任何标签】
2018/12/29 jQuery
在weex中愉快的使用scss的方法步骤
2020/01/02 Javascript
javascript设计模式之迭代器模式
2020/01/30 Javascript
微信小程序实现点击页面出现文字
2020/09/21 Javascript
微信小程序实现购物车功能
2020/11/18 Javascript
跟老齐学Python之通过Python连接数据库
2014/10/28 Python
详解Python中的序列化与反序列化的使用
2015/06/30 Python
Python实现字符串与数组相互转换功能示例
2017/09/22 Python
Python rstrip()方法实例详解
2018/11/11 Python
将python图片转为二进制文本的实例
2019/01/24 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
2019/07/25 Python
python实现logistic分类算法代码
2020/02/28 Python
C#如何允许一个类被继承但是避免这个类的方法被重载?
2015/02/24 面试题
银行会计财务工作个人的自我评价
2013/10/29 职场文书
行政专员工作职责
2013/12/22 职场文书
文明礼貌演讲稿
2014/05/12 职场文书
大学生职业生涯十年规划书范文
2014/09/17 职场文书
办理房产证委托书
2014/09/18 职场文书
本溪水洞导游词
2015/02/11 职场文书
教师工作表现自我评价
2015/03/05 职场文书
2016大学军训心得体会
2016/01/11 职场文书
《狼王梦》读后感:可怜天下父母心
2019/11/01 职场文书
使用Html+Css实现简易导航栏功能(导航栏遇到鼠标切换背景颜色)
2021/04/07 HTML / CSS