浅析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 相关文章推荐
Extjs学习笔记之八 继承和事件基础
Jan 08 Javascript
javascript学习笔记(七) js函数介绍
Jun 19 Javascript
javascript结合fileReader 实现上传图片
Jan 30 Javascript
jQuery 限制输入字符串长度
Jun 20 Javascript
JavaScript实现横线提示输入验证码随输入验证码输入消失的方法
Sep 24 Javascript
Jquery根据浏览器窗口改变调整大小的方法
Feb 07 Javascript
Vue指令的钩子函数使用方法
Mar 20 Javascript
利用vueJs实现图片轮播实例代码
Jun 03 Javascript
JS点击缩略图整屏居中放大图片效果
Jul 04 Javascript
JavaScript的setter与getter方法
Nov 29 Javascript
vuejs前后端数据交互之从后端请求数据的实例
Aug 11 Javascript
Node.js API详解之 zlib模块用法分析
May 19 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
php读取和保存base64编码的图片内容
2017/04/22 PHP
php中file_get_contents()函数用法实例
2019/02/21 PHP
php文件后缀不强制为.php的实操方法
2019/09/18 PHP
JQuery 选择和过滤方法代码总结
2010/11/19 Javascript
jQuery解析与处理服务器端返回xml格式数据的方法详解
2016/07/04 Javascript
Three.js学习之Lamber材质和Phong材质
2016/08/04 Javascript
超实用的javascript时间处理总结
2016/08/16 Javascript
AngularJS extend用法详解及实例代码
2016/11/15 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
2016/11/16 Javascript
微信小程序 出现错误:{&quot;baseresponse&quot;:{&quot;errcode&quot;:-80002,&quot;errmsg&quot;:&quot;&quot;}}解决办法
2017/02/23 Javascript
探索Vue高阶组件的使用
2018/01/08 Javascript
angularjs 缓存的使用详解
2018/03/19 Javascript
搭建vue开发环境
2018/07/19 Javascript
JavaScript高级函数应用之分时函数实例分析
2018/08/03 Javascript
Element input树型下拉框的实现代码
2018/12/21 Javascript
js页面加载后执行的几种方式小结
2020/01/30 Javascript
vue 使用rules对表单字段进行校验的步骤
2020/12/25 Vue.js
tensorflow实现逻辑回归模型
2018/09/08 Python
对numpy中二进制格式的数据存储与读取方法详解
2018/11/01 Python
对python自动生成接口测试的示例讲解
2018/11/30 Python
Django框架会话技术实例分析【Cookie与Session】
2019/05/24 Python
python自动化测试无法启动谷歌浏览器问题
2019/10/10 Python
沙特阿拉伯家用电器和电子产品购物网站:Sheta and Saif
2020/04/03 全球购物
Linux管理员面试题 Linux admin interview questions
2016/07/08 面试题
公司司机岗位职责
2014/02/07 职场文书
宗教学大学生职业生涯规划范文
2014/02/08 职场文书
社区母亲节活动方案
2014/03/05 职场文书
竞聘报告优秀范文
2014/11/06 职场文书
2014年班组工作总结
2014/11/20 职场文书
辞职离别感言
2015/08/04 职场文书
工作服管理制度范本
2015/08/06 职场文书
《最后一头战象》读后感:动物也有感情
2020/01/02 职场文书
详解vue中v-for的key唯一性
2021/05/15 Vue.js
PyMongo 查询数据的实现
2021/06/28 Python
在容器中使用nginx搭建上传下载服务器
2022/05/11 Servers