使用Node.js Express 框架开发一个数据库查询服务

一、Node.js

简单的说 Node.js 就是运行在服务端的 JavaScript。
Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。
Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。

二、Express 框架

Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。
使用 Express 可以快速地搭建一个完整功能的网站。

Express 框架核心特性:
可以设置中间件来响应 HTTP 请求。
定义了路由表用于执行不同的 HTTP 请求动作。
可以通过向模板传递参数来动态渲染 HTML 页面。

三、代码实现

主要实现了node.js连接mysql 数据库,查询需要的信息并返回查询结果的一个服务,中间包含了在开发服务中遇到的mysql 连接断开问题和请求跨域问题,可以作为node.js入门实战demo.

var express = require('express');
var app = express();
var request = require('request');

var mysql = require('mysql');

//解决mysql连接超过一定时间没有活动后,会自动关闭该连接
var pool = mysql.createPool({
    host: '192.168.1.2',
    user: 'root',
    password: '******',
    port: '3307',
    database: 'testdb',
    useConnectionPooling: true
});

//allow custom header and CORS
//解决跨域问题
app.all('*', function (req, res, next) {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild');
    res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');

    if (req.method == 'OPTIONS') {
        res.send(200); /让options请求快速返回/
    }
    else {
        next();
    }
});

app.get('/getsource', function (req, res) {

    //可以接受外部传参
    var paramtype = req.query.type;
    var sql = 'SELECT * FROM testtable where type=' + paramtype;
    //查询

    pool.query(sql, function (err, result) {
        if (err) {
            console.log('[SELECT ERROR] - ', err.message);
            var errorinfo = {
                "result": false,
                "error": err.message,
                "data": ""
            };
            res.send(errorinfo);
            return;
        }

        console.log(req.query.name);
        console.log('--------------------------SELECT----------------------------');
        console.log(result);

        var successinfo = {
            "result": true,
            "error": "",
            "data": result
        };

        res.send(successinfo);

        console.log('------------------------------------------------------------\n\n');

    });

});

var server = app.listen(3000, function () {

    var host = server.address().address;
    var port = server.address().port;

    console.log('Example app listening at http://%s:%s', host, port);
});
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值