使用express搭建一個簡單的查詢服務器

使用到的技術棧有express、mysql.
項目結構:node

service
--node_modules
--app.js
--query.js

app.js支持調用服務,使用body-parser對request進行處理.
query.js實現連接數據庫以及查詢數據庫的功能.
app.js代碼以下:mysql

var express = require('express');
var query = require('./query')
var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');
var app = express();
app.use(bodyParser.urlencoded({ extended: false }))//返回的對象是一個鍵值對,當extended爲false的時候,鍵值對中的值就爲'String'或'Array'形式,爲true的時候,則可爲任何數據類型。
app.use(bodyParser.json())
//跨域支持
app.all('*', function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    res.header('Access-Control-Allow-Headers', 'Content-Type');
    next();
});
//登陸
app.post('/login',(req,res)=>{
    var opts = req.body;
    query(" SELECT *FROM `v_users` WHERE userAcount = ?",opts.userName).then((result)=>{
        var response = result[0];
        if(opts.password !== response.u_password){
            return res.send({
                errorCode:'404',
                errorMsg:'登陸密碼錯誤'
            })
        }
        //模擬生成loginToken
        var loginToken = response.userAcount + Math.random()*Math.pow(10,16)
        res.send({
            loginToken:loginToken
        })
    })
})
var server = app.listen(3000,()=>{
    console.log('success')
})

query.js代碼以下:sql

;
(function() {
    var mysql = require('mysql');
    // var session = require('cookie-session');
    var query = (sql,key) => {
        var connection = mysql.createConnection({
            host: 'localhost',
            user: 'root',
            password: 'root123',
            database: 'm_users'
        });
        connection.connect()
        var promise = new Promise((resolve,reject)=>{
            connection.query(sql,[key], function(error, results, fields) {
                if(error){
                    reject(error)
                }else{
                    resolve(results);
                }
            });
            connection.end();
        });
        return promise;
    }
    module.exports = query;
})()

實踐總結:
1.express的入門級用法,以及對body-parser和mysql插件的用法。
2.嘗試使用 Inspector調試node程序,實現debugger,by the way 我的更習慣使用gulp來調試.
3.客戶端使用post調取接口的時候要區分Content-Type的區別:
Content-Type:application/json;charset=UTF-8 參數放在requestPayload
Content-Type:不設置或者application/x-www-form-urlencoded 參數放在Form Data數據庫

相關文章
相關標籤/搜索