使用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 相关文章推荐
JavaScript入门教程(5) js Screen屏幕对象
Jan 31 Javascript
js DOM模型操作
Dec 28 Javascript
js中opener与parent的区别详细解析
Jan 14 Javascript
js使用for循环与innerHTML获取选中tr下td值
Sep 26 Javascript
js实现的早期滑动门菜单效果代码
Aug 27 Javascript
基于Jquery和html5的7款个性化地图插件
Nov 17 Javascript
jQuery Validate初步体验(二)
Dec 12 Javascript
javascript类型系统——日期Date对象全面了解
Jul 13 Javascript
给easyui的datebox控件添加清空按钮的实现方法
Nov 09 Javascript
对于input 框限定输入值为浮点型的js代码
Sep 25 Javascript
vue + vuex todolist的实现示例代码
Mar 09 Javascript
vue-model实现简易计算器
Aug 17 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
详解php中 === 的使用
2016/10/24 PHP
JS获取scrollHeight问题想到的标准问题
2007/05/27 Javascript
javascript textContent与innerText的异同分析
2010/10/22 Javascript
javascript 事件绑定问题
2011/01/01 Javascript
利用JS实现浏览器的title闪烁
2013/07/08 Javascript
JS实现黑客帝国文字下落效果
2015/09/01 Javascript
JS+CSS实现仿msn风格选项卡效果代码
2015/10/22 Javascript
Bootstrap编写导航栏和登陆框
2016/05/30 Javascript
JS实现简单的右下角弹出提示窗口完整实例
2016/06/21 Javascript
AngularJS基础 ng-show 指令简单示例
2016/08/03 Javascript
jQuery中ajax错误调试分析
2016/12/01 Javascript
Mongoose学习全面理解(推荐)
2017/01/21 Javascript
jquery中绑定事件的异同
2017/02/28 Javascript
详解Node项目部署到云服务器上
2017/07/12 Javascript
基于Vue.js 2.0实现百度搜索框效果
2020/12/28 Javascript
nodejs调取微信收货地址的方法
2017/12/20 NodeJs
微信小程序授权登录及解密unionId出错的方法
2018/09/26 Javascript
详解vue实现坐标拾取器功能示例
2020/11/18 Vue.js
[03:24]CDEC.Y赛前采访 努力备战2016国际邀请赛中国区预选赛
2016/06/25 DOTA
[01:16:28]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第二场 2月23日
2021/03/11 DOTA
初学Python函数的笔记整理
2015/04/07 Python
Python中atexit模块的基本使用示例
2015/07/08 Python
Django objects的查询结果转化为json的三种方式的方法
2018/11/07 Python
Python实现带下标索引的遍历操作示例
2019/05/30 Python
Python的log日志功能及设置方法
2019/07/11 Python
Pytorch 多维数组运算过程的索引处理方式
2019/12/27 Python
python字符串下标与切片及使用方法
2020/02/13 Python
css3实现背景模糊的三种方式(小结)
2020/05/15 HTML / CSS
美国折扣网站:jClub
2017/08/07 全球购物
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
澳大利亚领先的男装零售连锁店:Lowes
2020/08/07 全球购物
C语言变量的命名规则都有哪些
2013/12/27 面试题
一个SQL面试题
2014/08/21 面试题
租房安全协议书
2014/08/20 职场文书
小学生国庆65周年演讲稿范文(2篇)
2014/09/21 职场文书
Python线程池与GIL全局锁实现抽奖小案例
2022/04/13 Python