微信小程序 通过nodeJs操作MySQL进行数据交互

下面的操作,我是通过phpStudyNavicat for MySQL搭建起来的开发环境
我提供一个Navicat for MySQL的安装步骤:https://blog.csdn.net/mossbaoo/article/details/88661851
先来看看目前MySQL的数据:
在这里插入图片描述在这里插入图片描述
node连接MySQL,需要安装expressmysql模块

var express = require("express");
var mysql = require('mysql');
var app = express();

// 配置数据库信息
var connection = mysql.createConnection({
  host: 'localhost', // 主机地址
  // port: '3306', // 端口
  user: 'root', // 用户名
  password: 'root', // 密码
  database: 'websites' // 数据库名
});

// 连接
connection.connect();

连接成功之后,就可以进行用户端与服务端的交互了,分为GETPOST
它们的区别是:GETreq.queryPOSTreq.body

GET

  1. 服务端代码(nodeJs)
app.get("/getType", function (req, res) {
  console.log(req.query);
  var sql = 'select * from mo_type_list';
  connection.query(sql , function (err, data) {
    if (err) {
      console.log(err);
    } else {
      var result = {
        "status": "200",
        "message": "success",
      }
      result.data = data;
      res.end(JSON.stringify(result));
    }
  });
});
  1. 用户端代码(小程序)
getType() {
  let that = this;
  wx.request({
    url: 'http://localhost:3000/getType',
    method: 'GET',
    data: {},
    header: {
      'content-type': 'application/x-www-form-urlencoded'
    },
    success(res) {
      console.log(res.data.data)
    }
  })
},
  1. 请求结果
    在这里插入图片描述

POST

  1. 服务端代码(nodeJs),POST稍微麻烦点,需要body-parser模块
var express = require("express");
var mysql = require('mysql');
var bodyParser = require("body-parser"); // post需要
app.use(bodyParser.urlencoded({ extended: true })); // post需要

app.post("/addType", function (req, res) {
  var params = [req.body.name];
  var sql = "INSERT INTO mo_type_list(Id,name) VALUES(0,?)";
  connection.query(sql, params, function (err, data) {
    if (err) {
      res.end('error')
    } else {
      var result = {
        "status": "200",
        "message": 'success',
      }
      res.end(JSON.stringify(result))
    }
  });
});
  1. 用户端代码(小程序)
addType() {
  let that = this;
   wx.request({
     url: 'http://localhost:3000/addType',
     method: 'POST',
     data: {
       name: '人事部'
     },
     header: {
       'content-type': 'application/x-www-form-urlencoded'
     },
     success(res) {
       console.log('success')
     }
   })
},

服务端的全部代码

var express = require("express");
var querystring = require('querystring');
var mysql = require('mysql');
// post需要
var bodyParser = require("body-parser");

var app = express();

// post需要
app.use(bodyParser.urlencoded({ extended: true }));

// 跨域
app.all('*', function (req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "X-Requested-With");
  res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
  res.header("X-Powered-By", ' 3.2.1');
  res.header("Content-Type", "application/json;charset=utf-8");
  next();
});

// 配置数据库信息
var connection = mysql.createConnection({
  host: 'localhost',
  // port: '3306',
  user: 'root',
  password: 'root',
  database: 'websites'
});

// 连接
connection.connect();

// 获取类型列表
app.get("/getType", function (req, res) {
  var sql = 'select * from mo_type_list';
  connection.query(sql , function (err, data) {
    if (err) {
      console.log(err);
    } else {
      var result = {
        "status": "200",
        "message": "success",
      }
      result.data = data;
      res.end(JSON.stringify(result));
    }
  });
});

// 添加类型
app.post("/addType", function (req, res) {
  var params = [req.body.name];
  var sql = "INSERT INTO mo_type_list(Id,name) VALUES(0,?)";
  connection.query(sql, params, function (err, data) {
    if (err) {
      res.end('error')
    } else {
      var result = {
        "status": "200",
        "message": 'success',
      }
      res.end(JSON.stringify(result))
    }
  });
});

app.listen(3000);
console.log('3000 running');
  • 23
    点赞
  • 221
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mossbaoo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值