使用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 相关文章推荐
Mootools 1.2教程(21)——类(二)
Sep 15 Javascript
模拟jQuery ajax服务器端与客户端通信的代码
Mar 28 Javascript
jQuery JSON的解析方式分享
Apr 05 Javascript
javascript实现显示和隐藏div方法汇总
Aug 14 Javascript
微信小程序 网络请求(GET请求)详解
Nov 16 Javascript
详解百度百科目录导航树小插件
Jan 08 Javascript
JQuery实现图片轮播效果
May 08 jQuery
Vue项目中跨域问题解决方案
Jun 05 Javascript
浅谈微信小程序之官方UI框架we-ui使用教程
Aug 20 Javascript
keep-alive不能缓存多层级路由菜单问题解决
Mar 10 Javascript
JS ES6异步解决方案
Apr 29 Javascript
JS中forEach()、map()、every()、some()和filter()的用法
May 11 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中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
2009/09/05 PHP
php简单定时执行任务的实现方法
2015/02/23 PHP
ThinkPHP实现图片上传操作的方法详解
2017/05/08 PHP
解读IE和firefox下JScript和HREF的执行顺序
2008/01/12 Javascript
JS 有名函数表达式全面解析
2010/03/19 Javascript
基于Jquery的仿照flash放大图片效果代码
2011/03/16 Javascript
javascript实现页面内关键词高亮显示代码
2014/04/03 Javascript
js 操作符汇总
2014/11/08 Javascript
Jquery动态替换div内容及动态展示的方法
2015/01/23 Javascript
javascript数据结构之二叉搜索树实现方法
2015/11/25 Javascript
一次$.getJSON不执行的简单记录
2016/07/19 Javascript
使用JS中的Replace()方法遇到的问题小结
2017/10/20 Javascript
微信小程序实现动态设置placeholder提示文字及按钮选中/取消状态的方法
2017/12/14 Javascript
Vue入门之数据绑定(小结)
2018/01/08 Javascript
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
2018/04/26 Javascript
JavaScript函数式编程(Functional Programming)高阶函数(Higher order functions)用法分析
2019/05/22 Javascript
JS实现继承的几种常用方式示例
2019/06/22 Javascript
深入理解webpack process.env.NODE_ENV配置
2020/02/23 Javascript
Python的Django框架使用入门指引
2015/04/15 Python
在Python的web框架中编写创建日志的程序的教程
2015/04/30 Python
TensorFlow实现iris数据集线性回归
2018/09/07 Python
解决python中画图时x,y轴名称出现中文乱码的问题
2019/01/29 Python
Python标准库使用OrderedDict类的实例讲解
2019/02/14 Python
django框架模板中定义变量(set variable in django template)的方法分析
2019/06/24 Python
python实现堆排序的实例讲解
2020/02/21 Python
Python 如何反方向迭代一个序列
2020/07/28 Python
HTML5 Blob 实现文件下载功能的示例代码
2019/11/29 HTML / CSS
金融专业个人求职信
2013/09/22 职场文书
工厂会计员职责
2014/02/06 职场文书
创建服务型党组织实施方案
2014/02/25 职场文书
保护环境倡议书100字
2014/05/19 职场文书
计算机网络专业求职信
2014/06/05 职场文书
2014领导班子四风问题对照检查材料思想汇报
2014/09/21 职场文书
个人政风行风自查自纠报告
2014/10/21 职场文书
2014年高中教师工作总结
2014/12/19 职场文书
2019新员工心得体会
2019/06/25 职场文书