浅析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 17 Javascript
javascript模拟select,jselect的方法实现
Nov 08 Javascript
利用毫秒减值计算时长的js代码
Sep 22 Javascript
JavaScript获得指定对象大小的方法
Jul 01 Javascript
javascript比较两个日期相差天数的方法
Jul 23 Javascript
JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端
Oct 08 Javascript
js验证手机号、密码、短信验证码代码工具类
Jun 24 Javascript
echarts实现地图定时切换散点与多图表级联联动详解
Aug 07 Javascript
使用VUE+iView+.Net Core上传图片的方法示例
Jan 04 Javascript
跟混乱的页面弹窗说再见
Apr 11 Javascript
微信公众号网页分享功能开发的示例代码
May 27 Javascript
javascript的var与let,const之间的区别详解
Feb 18 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将向Java靠拢
2006/10/09 PHP
建立动态的WML站点(一)
2006/10/09 PHP
探讨php中防止SQL注入最好的方法是什么
2013/06/10 PHP
php var_export与var_dump 输出的不同
2013/08/09 PHP
PHP中UNIX时间戳和日期间的转换与计算实例
2014/11/19 PHP
PHP中的静态变量及static静态变量使用详解
2015/11/05 PHP
详解PHP中cookie和session的区别及cookie和session用法小结
2016/06/12 PHP
PHP封装的多文件上传类实例与用法详解
2017/02/07 PHP
YII2框架中查询生成器Query()的使用方法示例
2020/03/18 PHP
Javascript 继承机制实例
2009/08/12 Javascript
js控制页面的全屏展示和退出全屏显示的方法
2015/03/10 Javascript
jQuery oLoader实现的加载图片和页面效果
2015/03/14 Javascript
理解javascript中的严格模式
2016/02/01 Javascript
js实现文字列表无缝滚动效果
2017/06/23 Javascript
微信小程序实现点击返回顶层的方法
2017/07/12 Javascript
详解react-router4 异步加载路由两种方法
2017/09/12 Javascript
React Native 使用Fetch发送网络请求的示例代码
2017/12/02 Javascript
Vue单页应用引用单独的样式文件的两种方式
2018/03/30 Javascript
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
js实现多个倒计时并行 js拼团倒计时
2019/02/25 Javascript
javascript实现手动点赞效果
2019/04/09 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
2019/05/27 Javascript
jQuery属性选择器用法实例分析
2019/06/28 jQuery
JS查找孩子节点简单示例
2019/07/25 Javascript
vue+element-ui+axios实现图片上传
2019/08/20 Javascript
解决Layui中templet中a的onclick参数传递的问题
2019/09/20 Javascript
node.js爬虫框架node-crawler初体验
2020/10/29 Javascript
[05:39]2014DOTA2国际邀请赛 DK晋级胜者组专访战队国士无双
2014/07/14 DOTA
python简单鼠标自动点击某区域的实例
2019/06/25 Python
python 监测内存和cpu的使用率实例
2019/11/28 Python
Python如何使用函数做字典的值
2019/11/30 Python
解决numpy矩阵相减出现的负值自动转正值的问题
2020/06/03 Python
文明城市标语
2014/06/16 职场文书
会计学专业自荐信
2014/06/25 职场文书
企业介绍信范文
2015/01/30 职场文书
MySQL三种方式实现递归查询
2022/04/18 MySQL