NodeJs对Mysql封装
之前在学习NodeJs的时候,每次操作数据库都需要连接数据库然后开始写Sql操作,这样非常麻烦,然后自己对Mysql进行了封装,一共100多行代码。
github地址: Mysql操作
我在里面对Mysql基本操作--增删改查进行了封装,在处理NodeJs的异步回调时使用了原型扩展、Promise规范的Q,我觉得Q的设计容易理解,便于使用。
因为大部分的查询需要返回数据,所以根据数据库表中字段设置相同的字段,下面会介绍,而修改、删除、增加数据都只需要返回是否成功,所以会返回0/1作为判断。
调用方式
首先创建一个Js文件main.js,我使用的是Node Express web框架,这样在处理前端静态资源和get/post请求时非常轻松,以后有兴趣可以自己写一个web框架。
创建数据库Article,字段articleId,articleName,date。然后我们会查询articleId和articleName。
var express = require("express");
var app = express();
var Mysql = require("./Mysql/Mysql2");
app.get("/Query",function(request,response){
var query = "select * from Article";
var mysql = new Mysql.createMysql({
database:"blog", //设置数据库名
response:response,
query:query,
config:["articleId","articleName"] //配置需要显示在前端的字段
});
mysql.Query();
});
var server = app.listen(9090,function(){
var host = server.address().address;
var port = server.address().port;
console.log("应用实例,访问地址为 http://%s:%s", host, port)
});
当我们启动了服务器之后,在页面上输入http://localhost:9090/Query,就可以得到我们需要的数据。
{"total":3,"result":[{"articleId":6,"articleName":"2015总结","date":"2016-1-14","categoryId":9},{"articleId":8,"articleName":"数据库","date":"2016-1-15","categoryId":6},{"articleId":9,"articleName":"linux基础","date":"2016-1-15","categoryId":6}]}
上面是没有参数的查询,也就是不需要传递参数,当然,我封装的Mysql是可以传递参数的,下面是整个从页面传递参数到取出数据的过程。
例如例子中,我需要根据Id查询出articleId=6时articleName时,需要从前端取到Id值,然后根据$.getJSON("/Query",{articleId:6},function(data){console.log(data)});发送ajax请求。
var express = require("express");
var app = express();
var Mysql = require("./Mysql/Mysql2");
app.get("/Query",function(request,response){
var query = "select * from Article where articleId=?";
var param = request.query;
var mysql = new Mysql.createMysql({
database:"blog",
response:response,
query:query,
param:[param.articleId], //配置参数
config:["articleId","articleName","date","categoryId"]
});
mysql.Query();
});
var server = app.listen(9090,function(){
var host = server.address().address;
var port = server.address().port;
console.log("应用实例,访问地址为 http://%s:%s", host, port)
});
就这样可以取到数据。
{"total":1,"result":[{"articleId":6,"articleName":"2015总结","date":"2016-1-14","categoryId":9}]}
总结
在学习技术的过程中,越发觉得代码就是要为我们带来方便,我们不想写重复的代码,那就把它封装起来吧,有很多人在问要不要重复造轮子的问题,我觉得这个问题因人而异,我个人非常喜欢造轮子,如果是简单的东西,都自己封装,如果是要用大的框架,就去学习别人的框架,看看别人的源码,我曾经承诺过不许别人说我Jquery基础差,以后一定会去研究它的源码,不过目前优先级不高,当我水平达到一个层次后,自然会想突破自己,就会去看别人的框架源码提升框架水平,现在还是打好基础,认真走好每一步,这样才能茁壮成长。
NodeJs对Mysql封装的更多相关文章
- 用Nodejs连接MySQL
转载,原地址:http://blog.fens.me/nodejs-mysql-intro/ 前言 MySQL是一款常用的开源数据库产品,通常也是免费数据库的首选.查了一下NPM列表,发现Nodejs ...
- vue+nodejs+express+mysql 建立一个在线网盘程序
vue+nodejs+express+mysql 建立一个在线网盘程序 目录 vue+nodejs+express+mysql 建立一个在线网盘程序 第一章 开发环境准备 1.1 开发所用工具简介 1 ...
- 转】用Nodejs连接MySQL
原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/2/ 感谢! 用Nodejs连接MySQL 从零开始node ...
- 开源一个好用的nodejs访问mysql类库
一.背景问题 自nodejs诞生以来出现了一大批的web框架如express koa2 egg等等,前端可以不再依赖后端可以自己控制服务端的逻辑.原来的后端开发同学的阵地前端如今同样也写的风生水起,撸 ...
- nodejs 连接 mysql 查询事务处理
自己用 mysql 很多次的,然后又是主玩nodejs的.专门写一篇文章来说说nodejs连接mysql数据库.在使用之前,请检查计算机是否具有一下环境! nodejs 执行环境. mysql数据库环 ...
- nodejs项目mysql使用sequelize支持存储emoji
nodejs项目mysql使用sequelize支持存储emoji 本篇主要记录nodejs项目阿里云mysql如何支持存储emoji表情. 因由 最近项目遇到用户在文本输入emoji进行存储的时候导 ...
- 学习Nodejs之mysql
学习Nodejs连接mysql数据库: 1.先安装mysql数据库 npm install mysql 2.测试连接数据库: var sql = require("mysql"); ...
- nodejs+express+mysql 增删改查
之前,一直使用的是nodejs+thinkjs来完成自己所需的项目需求,而对于nodejs中另外一中应用框架express却了解的少之又少,这两天就简单的了解了一下如何使用express来做一些数据库 ...
- Nodejs连接mysql
1.首先需要安装nodejs 的mysql包 npm install mysql 2.编写nodejs与mysql交互的代码 var mysql = require('mysql'); var TES ...
随机推荐
- 一步一步使用ABP框架搭建正式项目系列教程
研究ABP框架好多天了,第一次看到这个框架的名称到现在已经很久了,但由于当时内功有限,看不太懂,所以就只是大概记住了ABP这个名字.最近几天,看到了园友@阳光铭睿的系列ABP教程,又点燃了我内心要研究 ...
- 前端学HTTP之日志记录
前面的话 几乎所有的服务器和代理都会记录下它们所处理的HTTP事务摘要.这么做出于一系列的原因:跟踪使用情况.安全性.计费.错误检测等等.本文将谥介绍日志记录 记录内容 大多数情况下,日志的记录出于两 ...
- js数组学习整理
原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); // ...
- Supermap iCloudManager -负载均衡
Supermap icm负载均衡理解: 应用场景:地图出图 子节点1和子节点2中的服务保持一致,一般情况下设置的是匿名用户通过nginx访问服务信息,所以不需要登录. 1.通过nginx分发请求,(轮 ...
- SAP自定义权限对象
SAP系统自带了很多的权限对象,每一个运行画面都有非常多的权限用到.不过标准的权限对象并不一定适合于用在客户自己开发的程序里面,所以每个ABAPer都应该会自己开发一套权限对象,并引用在程序代码里面. ...
- 热修复-Nuwa学习篇
nuwa热修复是基于qq空间团队的思路,最近的热度话题了,很多种方案,自己先研究几种方案,基本上都各有优势,学习肯定得先挑个软柿子捏了,自己对比了一下,发现nuwa代码量少点,所以就决定了,先研究nu ...
- 【转】组件化的Web王国
本文由 埃姆杰 翻译.未经许可,禁止转载!英文出处:Future Insights. 内容提要 使用许多独立组件构建应用程序的想法并不新鲜.Web Component的出现,是重新回顾基于组件的应用程 ...
- Android快乐贪吃蛇游戏实战项目开发教程-06虚拟方向键(五)绘制方向键箭头
本系列教程概述与目录:http://www.cnblogs.com/chengyujia/p/5787111.html本系列教程项目源码GitHub地址:https://github.com/jack ...
- #26 fibonacci seqs
Difficulty: Easy Topic: Fibonacci seqs Write a function which returns the first X fibonacci numbers. ...
- centos7+mono4.2.3.4+jexus5.8.1跨平台起飞
很早之前就开始关注.net跨平台,最近正好测试了下用EF6连接mysql,于是就想直接把网站扔进Linux.查了很多资料,鼓捣了两个晚上,终于成功. 这里我使用的是budgetvm的1G openvz ...