浅析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 继承机制实例
Aug 12 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
Jun 09 Javascript
JavaScript利用正则表达式去除日期中的-
Jun 09 Javascript
上传图片预览JS脚本 Input file图片预览的实现示例
Oct 23 Javascript
jQuery的context属性用法实例
Dec 27 Javascript
基于jQuery实现的仿百度首页滑动选项卡效果代码
Nov 16 Javascript
在网页中插入百度地图的步骤详解
Dec 02 Javascript
jquery基于layui实现二级联动下拉选择(省份城市选择)
Jun 20 jQuery
详谈innerHTML innerText的使用和区别
Aug 18 Javascript
JS轮播图实现简单代码
Feb 19 Javascript
Vue源码学习之关于对Array的数据侦听实现
Apr 23 Javascript
解决elementui表格操作列自适应列宽
Dec 28 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 获取远程文件大小的3种解决方法
2013/07/11 PHP
使用php判断服务器是否支持Gzip压缩功能
2013/09/24 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
2014/06/05 PHP
ThinkPHP的MVC开发机制实例解析
2014/08/23 PHP
Linux下安装oracle客户端并配置php5.3
2014/10/12 PHP
php读取文件内容的方法汇总
2015/01/24 PHP
php简单日历函数
2015/10/28 PHP
php生成唯一数字id的方法汇总
2015/11/18 PHP
Yii中表单用法实例详解
2016/01/05 PHP
PHP获取数据库表中的数据插入新的表再原删除数据方法
2018/10/12 PHP
浅谈PHPANALYSIS提取关键字
2019/03/08 PHP
php post换行的方法
2020/02/03 PHP
List all the Databases on a SQL Server
2007/06/21 Javascript
点击文章内容处弹出页面代码
2009/10/01 Javascript
jquery 触发a链接点击事件解决方案
2013/05/02 Javascript
原生javascript图片自动或手动切换示例附演示源码
2013/09/04 Javascript
兼容所有浏览器的js复制插件Zero使用介绍
2014/03/19 Javascript
javascript实现日期时间动态显示示例代码
2015/09/08 Javascript
jquery+ajax+text文本框实现智能提示完整实例
2016/07/09 Javascript
Angular 路由route实例代码
2016/07/12 Javascript
angular实现图片懒加载实例代码
2017/06/08 Javascript
详解如何用babel转换es6的class语法
2018/04/03 Javascript
微信小程序页面间传值与页面取值操作实例分析
2019/04/30 Javascript
[01:31]DOTA2上海特级锦标赛 SECRET战队完整宣传片
2016/03/16 DOTA
python不带重复的全排列代码
2013/08/13 Python
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
2015/10/13 Python
在python里使用await关键字来等另外一个协程的实例
2020/05/04 Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
2020/06/17 Python
python实现梯度下降算法的实例详解
2020/08/17 Python
HTML5 canvas基本绘图之绘制线段
2016/06/27 HTML / CSS
Html5实现二维码扫描并解析
2016/01/20 HTML / CSS
英国文具、办公用品和科技商店:Ryman
2018/09/27 全球购物
大学生入党思想汇报
2014/01/01 职场文书
财产公证书格式
2014/04/10 职场文书
钳工实训报告总结
2014/11/04 职场文书
vue+springboot实现登录验证码
2021/05/27 Vue.js