使用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 相关文章推荐
载入jQuery库的最佳方法详细说明及实现代码
Dec 28 Javascript
jQuery筛选器children()案例详解(图文)
Feb 17 Javascript
一行命令搞定node.js 版本升级
Jul 20 Javascript
node.js中的fs.fchmod方法使用说明
Dec 16 Javascript
JS Select下拉框(支持输入模糊查询)
Feb 04 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
Nov 02 Javascript
微信小程序之数据绑定原理解析
Aug 14 Javascript
vue.js循环radio的实例
Nov 07 Javascript
Vue打包部署到Nginx时,css样式不生效的解决方式
Aug 03 Javascript
JavaScript中while循环的基础使用教程
Aug 11 Javascript
javascript中call,apply,bind的区别详解
Dec 11 Javascript
详解JS数组方法
Nov 20 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数据缓存技术
2007/02/14 PHP
PHP form 表单传参明细研究
2009/07/17 PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
2011/06/24 PHP
PHP中extract()函数的妙用分析
2012/07/11 PHP
PHP加Nginx实现动态裁剪图片方案
2014/03/10 PHP
php随机取mysql记录方法小结
2014/12/27 PHP
PHP中通过trigger_error触发PHP错误示例
2015/06/23 PHP
PHP基于自增数据如何生成不重复的随机数示例
2017/05/19 PHP
PHP代码覆盖率统计详解
2020/07/22 PHP
再谈ie和firefox下的document.all属性
2009/10/21 Javascript
Jquery练习之表单验证实现代码
2010/12/14 Javascript
兼容FF和IE的动态table示例自写
2013/10/21 Javascript
JavaScript 学习笔记之变量及其作用域
2015/01/14 Javascript
Bootstarp基本模版学习教程
2017/02/01 Javascript
jQuery使用unlock.js插件实现滑动解锁
2017/04/04 jQuery
vue-cli2.9.3 详细教程
2018/04/23 Javascript
Javascript中绑定click事件的四种方式介绍
2018/10/26 Javascript
判断iOS、Android以及PC端的示例代码
2018/11/15 Javascript
JS实现的自定义map方法示例
2019/05/17 Javascript
vue实现节点增删改功能
2019/09/26 Javascript
JavaScript实现轮播图效果代码实例
2019/09/28 Javascript
JavaScript装饰者模式原理与用法实例详解
2020/03/09 Javascript
PyQt5实现下载进度条效果
2018/04/19 Python
numpy.ndarray 实现对特定行或列取值
2019/12/05 Python
Python3 把一个列表按指定数目分成多个列表的方式
2019/12/25 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
2020/02/07 Python
使用Python对Dicom文件进行读取与写入的实现
2020/04/20 Python
如何基于matlab相机标定导出xml文件
2020/11/02 Python
python 自定义异常和主动抛出异常(raise)的操作
2020/12/11 Python
详解Python中的Lock和Rlock
2021/01/26 Python
CSS3实现菜单悬停效果
2020/11/17 HTML / CSS
毕业生求职简历中的自我评价
2013/10/18 职场文书
2014年教师德育工作总结
2014/11/10 职场文书
三傻大闹宝莱坞观后感
2015/06/03 职场文书
情侣餐厅的创业计划书范本!
2019/07/26 职场文书
八年级作文之友情
2019/11/25 职场文书