使用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 处理事件绑定的一些兼容写法
Dec 24 Javascript
JavaScript setTimeout和setInterval的使用方法 说明
Mar 25 Javascript
dess中一个简单的多路委托的实现
Jul 20 Javascript
javascript setAttribute, getAttribute 在不同浏览器上的不同表现
Aug 05 Javascript
纯JS实现五子棋游戏兼容各浏览器(附源码)
Apr 24 Javascript
javascript实现跳转菜单的具体方法
Jul 05 Javascript
jquery全选checkBox功能实现代码(取消全选功能)
Dec 10 Javascript
SuperSlide标签切换、焦点图多种组合插件
Mar 14 Javascript
非常优秀的JS图片轮播插件Swiper的用法
Jan 03 Javascript
解决vue-cli项目打包出现空白页和路径错误的问题
Sep 04 Javascript
p5.js临摹动态图形的方法
Oct 23 Javascript
Vue实现简单的拖拽效果
Aug 25 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
PHPMYADMIN导入数据最大为2M的解决方法
2012/04/23 PHP
discuz加密解密函数使用方法和中文注释
2014/01/21 PHP
php命令行使用方法和命令行参数说明
2014/04/08 PHP
PHP通过插入mysql数据来实现多机互锁实例
2014/11/05 PHP
使用php-timeit估计php函数的执行时间
2015/09/06 PHP
Yii框架分页实现方法详解
2017/05/20 PHP
prototype.js的Ajax对象
2006/09/23 Javascript
JavaScript将Table导出到Excel实现思路及代码
2013/03/13 Javascript
javascript定义变量时有var和没有var的区别探讨
2014/07/21 Javascript
jquery获取多个checkbox的值异步提交给php
2015/07/07 Javascript
详解webpack 入门总结和实践(按需异步加载,css单独打包,生成多个入口文件)
2017/06/20 Javascript
利用canvas实现的加载动画效果实例代码
2017/07/05 Javascript
解决vue项目打包后提示图片文件路径错误的问题
2018/07/04 Javascript
微信小程序中上传图片并进行压缩的实现代码
2018/08/28 Javascript
函数式编程入门实践(一)
2019/04/20 Javascript
JS原型prototype和__proto__用法实例分析
2020/03/14 Javascript
JavaScript实现拖拽效果
2020/03/16 Javascript
django1.8使用表单上传文件的实现方法
2016/11/04 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
Python实现获取照片拍摄日期并重命名的方法
2017/09/30 Python
python实现AES加密解密
2019/03/28 Python
对python 调用类属性的方法详解
2019/07/02 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
2020/04/01 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
2020/07/07 Python
Web前端绘制0.5像素的几种方法
2017/08/11 HTML / CSS
AmazeUI框架搭建的方法步骤(图文)
2020/08/17 HTML / CSS
加大码胸罩、内裤和服装:Just My Size
2019/03/21 全球购物
管理科学大学生求职信
2013/11/13 职场文书
贷款担保书范文
2014/05/13 职场文书
理发店策划方案
2014/06/05 职场文书
学校督导评估方案
2014/06/10 职场文书
幼儿园新学期开学寄语
2015/05/27 职场文书
花田少年史观后感
2015/06/16 职场文书
Python实现简单的猜单词
2021/06/15 Python
详解Golang如何优雅的终止一个服务
2022/03/21 Golang
苹果macOS 13开发者预览版Beta 8发布 正式版10月发布
2022/09/23 数码科技