使用express搭建一个简单的查询服务器的方法


Posted in Javascript onFebruary 09, 2018

本文介绍了使用express搭建一个简单的查询服务器的方法,分享给大家,具体如下:

使用到的技术栈有express、mysql.

项目结构:

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

app.js支持调用服务,使用body-parser对request进行处理.

query.js实现链接数据库以及查询数据库的功能.

app.js代码如下:

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代码如下:

(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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
原生js实现fadein 和 fadeout淡入淡出效果
Jun 05 Javascript
喜大普奔!jQuery发布 3.0 最终版
Jun 12 Javascript
Json解析的方法小结
Jun 22 Javascript
详解前端自动化工具gulp自动添加版本号
Dec 20 Javascript
DWR3 访问WEB元素的两种方法实例详解
Jan 03 Javascript
Node.js使用MySQL连接池的方法实例
Feb 11 Javascript
Vue-Router模式和钩子的用法
Feb 28 Javascript
React+Antd+Redux实现待办事件的方法
Mar 14 Javascript
react 移动端实现列表左滑删除的示例代码
Jul 04 Javascript
简单谈谈javascript高级特性
Sep 04 Javascript
vue element-ui中table合计指定列求和实例
Nov 02 Javascript
前端JS获取URL参数的4种方法总结
Apr 05 Javascript
js自定义trim函数实现删除两端空格功能
Feb 09 #Javascript
JavaScript运行原理分析
Feb 09 #Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
Feb 09 #Javascript
详解如何在项目中使用jest测试react native组件
Feb 09 #Javascript
vue checkbox 全选 数据的绑定及获取和计算方法
Feb 09 #Javascript
mint-ui 时间插件使用及获取选择值的方法
Feb 09 #Javascript
VUE2 前端实现 静态二级省市联动选择select的示例
Feb 09 #Javascript
You might like
cakephp打印sql语句的方法
2015/02/13 PHP
PHP从FLV文件获取视频预览图的方法
2015/03/12 PHP
PHP递归遍历多维数组实现无限分类的方法
2016/05/06 PHP
php 读写json文件及修改json的方法
2018/03/07 PHP
JavaScript入门教程(7) History历史对象
2009/01/31 Javascript
ExtJS扩展 垂直tabLayout实现代码
2009/06/21 Javascript
Jquery 插件学习实例1 插件制作说明与tableUI优化
2010/04/02 Javascript
jQuery布局插件UI Layout简介及使用方法
2013/04/03 Javascript
JavaScript中数据结构与算法(二):队列
2015/06/19 Javascript
如何高效率去掉js数组中的重复项
2016/04/12 Javascript
Windows环境下npm install 报错: operation not permitted, rename的解决方法
2016/09/26 Javascript
JavaScript字符串检索字符的方法
2017/06/23 Javascript
jQuery模拟12306城市选择框功能简单实现方法示例
2018/08/13 jQuery
微信小程序自定义select下拉选项框组件的实现代码
2018/08/28 Javascript
关于JavaScript中异步/等待的用法与理解
2020/11/18 Javascript
[52:10]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第二场 6.3
2018/06/04 DOTA
Python重新引入被覆盖的自带function
2014/07/16 Python
Python脚本实现自动将数据库备份到 Dropbox
2017/02/06 Python
Python线性方程组求解运算示例
2018/01/17 Python
python+influxdb+shell编写区域网络状况表
2018/07/27 Python
python实现WebSocket服务端过程解析
2019/10/18 Python
pytorch之Resize()函数具体使用详解
2020/02/27 Python
Python垃圾回收机制三种实现方法
2020/04/27 Python
安装python依赖包psycopg2来调用postgresql的操作
2021/01/01 Python
css3学习之2D转换功能详解
2016/12/23 HTML / CSS
HTML5 Canvas 实现K线图的示例代码
2019/12/23 HTML / CSS
BCBG官网:BCBGMAXAZRIA
2017/12/29 全球购物
嘻哈珠宝品牌:KRKC&CO
2020/10/19 全球购物
高中生的自我评价
2014/03/04 职场文书
2014年基层党组织公开承诺书
2014/03/29 职场文书
机械设备与数控技术专业求职信
2014/08/10 职场文书
党性锻炼的心得体会
2014/09/03 职场文书
加强作风建设心得体会
2014/10/22 职场文书
罚站检讨书
2015/01/29 职场文书
巾帼建功标兵先进事迹材料
2016/02/29 职场文书
pytorch 一行代码查看网络参数总量的实现
2021/05/12 Python