浅析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触发器详解
Mar 10 Javascript
JavaScript 面向对象编程(1) 基础
May 18 Javascript
JavaScript 原型学习总结
Oct 29 Javascript
分享一款基于jQuery的视频播放插件
Oct 09 Javascript
JavaScript 作用域链解析
Nov 13 Javascript
jQuery打字效果实现方法(附demo源码下载)
Dec 18 Javascript
理解Javascript文件动态加载
Jan 29 Javascript
JavaScript判断变量是否为数组的方法(Array)
Feb 24 Javascript
有关jquery与DOM节点操作方法和属性记录
Apr 15 Javascript
基于Node.js + WebSocket打造即时聊天程序嗨聊
Nov 29 Javascript
js仿百度音乐全选操作
Jan 13 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
May 01 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 第二节 数据类型之字符串类型
2012/04/28 PHP
PHP递归创建多级目录
2015/11/05 PHP
TP5框架请求响应参数实例分析
2019/10/17 PHP
jQuery操作Select选择的Text和Value(获取/设置/添加/删除)
2013/03/06 Javascript
简单js代码实现selece二级联动(推荐)
2014/02/18 Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
2015/05/04 Javascript
jQuery实现网页抖动的菜单抖动效果
2015/08/07 Javascript
js实现二级菜单渐隐显示
2015/11/03 Javascript
JavaScript性能优化总结之加载与执行
2016/08/11 Javascript
js 上传文件预览的简单实例
2016/08/16 Javascript
Vue项目webpack打包部署到服务器的实例详解
2017/07/17 Javascript
Angular4.x Event (DOM事件和自定义事件详解)
2018/10/09 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
2018/10/15 Javascript
微信小程序实现点击效果
2019/06/21 Javascript
微信小程序开发常见问题及解决方案
2019/07/11 Javascript
JS实现页面跳转与刷新的方法汇总
2019/08/30 Javascript
vue过滤器实现日期格式化的案例分析
2020/07/02 Javascript
vue $router和$route的区别详解
2020/12/02 Vue.js
[01:37]PWL S2开团时刻DAY1&2——这符有毒
2020/11/20 DOTA
Python对象转JSON字符串的方法
2016/04/27 Python
Python的标准模块包json详解
2017/03/13 Python
Python基于回溯法子集树模板实现8皇后问题
2017/09/01 Python
matplotlib作图添加表格实例代码
2018/01/23 Python
python opencv之SIFT算法示例
2018/02/24 Python
python使用生成器实现可迭代对象
2018/03/20 Python
python之DataFrame实现excel合并单元格
2021/02/22 Python
Django框架视图函数设计示例
2019/07/29 Python
超酷炫 CSS3垂直手风琴菜单
2016/06/28 HTML / CSS
浅谈CSS3 box-sizing 属性 有趣的盒模型
2019/04/02 HTML / CSS
美的官方商城:Midea
2016/09/14 全球购物
希特勒经典演讲稿
2014/05/19 职场文书
个人作风建设自查报告
2014/10/22 职场文书
个人总结格式范文
2015/03/09 职场文书
浅析Python中的随机采样和概率分布
2021/12/06 Python
剧场版《转生恶役只好拔除破灭旗标》公开最新视觉图 2023年上映
2022/04/02 日漫
java开发双人五子棋游戏
2022/05/06 Java/Android