浅析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 HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
Jun 02 Javascript
JavaScript设计模式学习之“类式继承”
Mar 12 Javascript
JS实现仿微博可关闭弹出层效果
Sep 21 Javascript
12306 刷票脚本及稳固刷票脚本(防挂)
Jan 04 Javascript
js实现3D图片展示效果
Mar 09 Javascript
微信小程序页面间通信的5种方式
Mar 31 Javascript
jQuery树插件zTree使用方法详解
May 02 jQuery
使用ngrok+express解决本地环境中微信接口调试问题
Feb 26 Javascript
vue+springboot图片上传和显示的示例代码
Feb 14 Javascript
vue element table中自定义一些input的验证操作
Jul 18 Javascript
Vue绑定用户接口实现代码示例
Nov 04 Javascript
vue+elementUI动态增加表单项并添加验证的代码详解
Dec 17 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
第八节--访问方式
2006/11/16 PHP
PHP模型Model类封装数据库操作示例
2019/03/14 PHP
Nigma vs Liquid BO3 第一场2.14
2021/03/10 DOTA
Jquery+JSon 无刷新分页实现代码
2010/04/01 Javascript
基于json的jquery地区联动效果代码
2011/07/06 Javascript
js实时获取系统当前时间实例代码
2013/06/28 Javascript
javascript单引号和双引号的区别和处理
2014/05/14 Javascript
js查找节点的方法小结
2015/01/13 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
将json转换成struts参数的方法
2016/11/08 Javascript
详解jQuery选择器
2016/12/21 Javascript
vue 实现数字滚动增加效果的实例代码
2018/07/06 Javascript
微信小程序实现banner图轮播效果
2020/06/28 Javascript
js前端面试之同步与异步问题详解
2019/04/03 Javascript
ES6知识点整理之对象解构赋值应用示例
2019/04/17 Javascript
关于在LayUI中使用AJAX提交巨坑记录
2019/10/25 Javascript
vue css 引入asstes中的图片无法显示的四种解决方法
2020/03/16 Javascript
Node.js API详解之 console模块用法详解
2020/05/12 Javascript
用python读写excel的方法
2014/11/18 Python
详解python的sorted函数对字典按key排序和按value排序
2018/08/10 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
2019/05/09 Python
Python第三方包PrettyTable安装及用法解析
2020/07/08 Python
Python pysnmp使用方法及代码实例
2020/08/24 Python
HTML5实现WebSocket协议原理浅析
2014/07/07 HTML / CSS
英国手机零售商:Carphone Warehouse
2018/06/06 全球购物
澳大利亚婴儿礼品公司:The Baby Gift Company
2018/11/04 全球购物
英国最大的在线蜡烛商店:Candles Direct
2019/03/26 全球购物
波兰最大的宠物用品网上商店:FERA.PL
2019/08/11 全球购物
幼儿园保教管理制度
2014/02/03 职场文书
入党介绍人评语
2014/05/06 职场文书
董事长秘书工作职责
2014/06/10 职场文书
贷款委托书
2014/08/01 职场文书
基层党支部整改方案
2014/10/25 职场文书
2015年文明创建工作总结
2015/04/30 职场文书
python实战之一步一步教你绘制小猪佩奇
2021/04/22 Python
Ajax实现三级联动效果
2021/10/05 Javascript