浅析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 网站换肤功能实现代码
Nov 02 Javascript
JAVA四种基本排序方法实例总结
Jul 24 Javascript
js实现改进的仿蓝色论坛导航菜单效果代码
Sep 06 Javascript
vue自定义指令实现v-tap插件
Nov 03 Javascript
jQuery实现6位数字密码输入框
Dec 29 Javascript
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
Mar 24 jQuery
Vue注册组件命名时不能用大写的原因浅析
Apr 25 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
Jul 05 Javascript
bootstrap Table实现合并相同行
Jul 19 Javascript
Vue分页插件的前后端配置与使用
Oct 09 Javascript
解决element-ui里的下拉多选框 el-select 时,默认值不可删除问题
Aug 14 Javascript
vue添加自定义右键菜单的完整实例
Dec 08 Vue.js
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
全国FM电台频率大全 - 28 甘肃省
2020/03/11 无线电
php更新mysql后获取改变行数的方法
2014/12/25 PHP
PHP中实现获取IP和地理位置类分享
2015/02/10 PHP
codeigniter中实现一次性加载多个view的方法
2015/03/20 PHP
利用php + Laravel如何实现部署自动化详解
2017/10/11 PHP
PHP 布尔值的自增与自减的实现方法
2018/05/03 PHP
Laravel中错误与异常处理的用法示例
2018/09/16 PHP
用Javascript同时提交多个Web表单的方法
2009/12/26 Javascript
angularjs实现与服务器交互分享
2014/06/24 Javascript
ExpressJS入门实例
2015/01/14 Javascript
jQuery制作仿Mac Lion OS滚动条效果
2015/02/10 Javascript
Nodejs初级阶段之express
2015/11/23 NodeJs
浅析Javascript ES6新增值比较函数Object.is
2016/08/24 Javascript
jQuery实现的图片轮播效果完整示例
2016/09/12 Javascript
jQuery实现按比例缩放图片的方法
2017/04/29 jQuery
基于Vue的文字跑马灯组件(npm 组件包)
2017/05/24 Javascript
javascript将json格式数组下载为excel表格的方法
2017/12/22 Javascript
antd 表格列宽自适应方法以及错误处理操作
2020/10/27 Javascript
Python实现获取网站PR及百度权重
2015/01/21 Python
Python解析xml中dom元素的方法
2015/03/12 Python
flask框架中勾子函数的使用详解
2018/08/01 Python
在PyCharm下打包*.py程序成.exe的方法
2018/11/29 Python
PyCharm2020.1.1与Python3.7.7的安装教程图文详解
2020/08/07 Python
python 中 .py文件 转 .pyd文件的操作
2021/03/04 Python
css3实现一款模仿iphone样式的注册表单
2013/03/20 HTML / CSS
西班牙英格列斯百货官网:El Corte Inglés
2016/09/25 全球购物
Nike西班牙官方网站:Nike.com (ES)
2017/10/30 全球购物
当x.equals(y)等于true时,x.hashCode()与y.hashCode()可以不相等,这句话对不对
2015/05/02 面试题
英文版网络工程师求职信
2013/10/28 职场文书
服装电子商务创业计划书
2014/01/30 职场文书
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
最美家庭活动方案
2014/08/31 职场文书
2014机关党员干部“正风肃纪”思想汇报
2014/09/15 职场文书
2014年人民调解工作总结
2014/12/08 职场文书
个人廉洁自律总结
2015/03/06 职场文书
小学教师求职信范文
2015/03/20 职场文书