• 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}]}
      total:查询出的数据总量。
      result:数组中包括很多条数据,一般遍历数组进行操作。

    上面是没有参数的查询,也就是不需要传递参数,当然,我封装的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基础差,以后一定会去研究它的源码,不过目前优先级不高,当我水平达到一个层次后,自然会想突破自己,就会去看别人的框架源码提升框架水平,现在还是打好基础,认真走好每一步,这样才能茁壮成长。

  • 相关阅读:
    Linux下启用异步IO
    ORA-20011 ORA-29913 KUP-11024
    OCP 11G 053题库解析汇总链接(601-712)
    OCP 11G 053题库解析汇总链接(201-400)
    OCP 11G 053题库解析汇总链接(401-600)
    OCP 11G 053题库解析汇总链接(1-200)
    OCP 11G 052题库解析汇总链接
    OCP 11G 051题库解析汇总链接
    Vue外部js引入做为全局变量
    Java实现atoi函数
  • 原文地址:https://www.cnblogs.com/xiaohaoxuezhang/p/5138126.html
Copyright © 2020-2023  润新知