使用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 27 Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
May 25 Javascript
基于Bootstrap的Java开发问题汇总(Spring MVC)
Jan 15 Javascript
JQ中$(window).load和$(document).ready区别与执行顺序
Mar 01 Javascript
浅谈Node.js 中间件模式
Jun 12 Javascript
Koa代理Http请求的示例代码
Oct 10 Javascript
vuejs简单验证码功能完整示例
Jan 08 Javascript
js删除数组中某几项的方法总结
Jan 16 Javascript
JS实现点击li标签弹出对应的索引功能【案例】
Feb 18 Javascript
vue项目中实现缓存的最佳方案详解
Jul 11 Javascript
微信小程序实现多选框功能的实例代码
Jun 24 Javascript
vue实现导航菜单和编辑文本的示例代码
Jul 04 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 链接表的附加功能尚未激活的问题
2010/08/01 PHP
详解php中serialize()和unserialize()函数
2017/07/08 PHP
PHP弱类型语言中类型判断操作实例详解
2017/08/10 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
Jquey拖拽控件Draggable使用方法(asp.net环境)
2010/09/28 Javascript
javascript textContent与innerText的异同分析
2010/10/22 Javascript
给js文件传参数(详解)
2014/07/13 Javascript
浅谈JavaScript函数节流
2014/12/09 Javascript
原生javascript实现隔行换色
2015/01/04 Javascript
Javascript动态创建div的方法
2015/02/09 Javascript
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
JavaScript获取浏览器信息的方法
2015/11/20 Javascript
深入理解jQuery之防止冒泡事件
2016/05/24 Javascript
Angular路由简单学习
2016/12/26 Javascript
Vue2 Vue-cli中使用Typescript的配置详解
2017/07/24 Javascript
Vue+webpack项目配置便于维护的目录结构教程详解
2018/10/14 Javascript
详解create-react-app 2.0版本如何启用装饰器语法
2018/10/23 Javascript
Layui表格监听行单双击事件讲解
2019/11/14 Javascript
JS+CSS实现动态时钟
2021/02/19 Javascript
Python实现字符串匹配算法代码示例
2017/12/05 Python
django与小程序实现登录验证功能的示例代码
2019/02/19 Python
浅谈python之自动化运维(Paramiko)
2020/01/31 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
2020/02/27 Python
Django 用户登陆访问限制实例 @login_required
2020/05/13 Python
初学者学习Python好还是Java好
2020/05/26 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
2020/07/14 Python
html5的自定义data-*属性与jquery的data()方法的使用
2014/07/02 HTML / CSS
HTML5制作酷炫音频播放器插件图文教程
2014/12/30 HTML / CSS
如何清空Session
2015/02/23 面试题
英文求职信结束语大全
2013/10/26 职场文书
党支部换届选举方案
2014/05/08 职场文书
小升初自荐信怎么写
2015/03/26 职场文书
学校光盘行动倡议书
2015/04/28 职场文书
课文《燕子》教学反思
2016/02/17 职场文书
《女娲补天》教学反思
2016/02/20 职场文书
《游戏王:大师决斗》将推出新卡牌包4月4日上线
2022/03/31 其他游戏