浅析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之卸载鼠标事件的代码
May 14 Javascript
IE与Firefox在JavaScript上的7个不同写法小结
Sep 14 Javascript
jquery下div 的resize事件示例代码
Mar 09 Javascript
12种JavaScript常用的MVC框架比较分析
Nov 16 Javascript
原生js实现图片层叠轮播切换效果
Feb 02 Javascript
Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法
Aug 18 Javascript
详解如何构建Angular项目目录结构
Jul 13 Javascript
JavaScript中call和apply方法的区别实例分析
Aug 03 Javascript
深度了解vue.js中hooks的相关知识
Jun 14 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
Jul 24 Javascript
js在HTML的三种引用方式详解
Aug 29 Javascript
v-slot和slot、slot-scope之间相互替换实例
Sep 04 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递归函数返回值使用方法
2013/02/18 PHP
PHP比你想象的好得多
2014/11/27 PHP
php操作mongoDB实例分析
2014/12/29 PHP
php使用ZipArchive函数实现文件的压缩与解压缩
2015/10/27 PHP
Laravel程序架构设计思路之使用动作类
2018/06/07 PHP
动态加载js文件 document.createElement
2006/10/14 Javascript
js获取url中&quot;?&quot;后面的字串方法
2014/05/15 Javascript
jQuery中[attribute^=value]选择器用法实例
2014/12/31 Javascript
JS+DIV实现鼠标划过切换层效果的方法
2015/05/25 Javascript
Bootstrap进度条学习使用
2017/02/09 Javascript
JS中实现函数return多个返回值的实例
2017/02/21 Javascript
Bootstrap fileinput组件封装及使用详解
2017/03/10 Javascript
JS ES6中setTimeout函数的执行上下文示例
2017/04/27 Javascript
BootStrap的两种模态框方式
2017/05/10 Javascript
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
nodejs取得当前执行路径的方法
2018/05/13 NodeJs
pyqt和pyside开发图形化界面
2014/01/22 Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
2018/02/21 Python
python文本数据相似度的度量
2018/03/12 Python
python根据url地址下载小文件的实例
2018/12/18 Python
Python Django中间件,中间件函数,全局异常处理操作示例
2019/11/08 Python
快速一键生成Python爬虫请求头
2021/03/04 Python
美国巧克力喷泉品牌:Sephra
2019/05/05 全球购物
英国电气世界:Electrical World
2019/09/08 全球购物
Club Monaco加拿大官网:设计师男女服装
2019/09/29 全球购物
Andrew Marc官网:设计师外套的领先制造商
2019/10/30 全球购物
公益活动策划方案
2014/01/09 职场文书
晚会邀请函范文
2014/01/24 职场文书
保护环境建议书
2014/03/12 职场文书
护理人员的自我评价分享
2014/03/15 职场文书
开学寄语大全
2014/04/08 职场文书
清明节网上祭英烈活动总结
2014/04/30 职场文书
优秀驾驶员先进事迹材料
2014/05/04 职场文书
2015年干部教育培训工作总结
2015/05/15 职场文书
复兴之路纪录片观后感
2015/06/02 职场文书
css中z-index: 0和z-index: auto的区别
2021/08/23 HTML / CSS