git源码地址: https://github.com/songkangle/weixin_node

小程序页面

数据库

user表

dream表

node的express框架index.js

var express = require('express');
var http= require("http");
var request = require('request');
var router = express.Router();

var index = require('../model/index.js');
var mysql = require('mysql');
var connection = mysql.createConnection({
  host : 'localhost',
  user : 'root',
  password : 'root', //你的密码(就是这个该死的密码坑死我了)
  database : 'dream' //你的数据库
});

connection.connect();

// 用户授权 -- 登录
router.post('/login',function(req,res,next){
  if(req.body.code){
    var url = 'https://api.weixin.qq.com/sns/jscode2session?appid=你的APPID&secret=你的密钥&grant_type=authorization_code&js_code='+req.body.code;
    request(url, function (error, response, body) {
      if (!error && response.statusCode == 200) {
        var bodyData = JSON.parse(body)
        res.send({
          code: '0',
          messages: '处理成功',
          data: bodyData
        });
      }
    })
  }
})

// 存入用户数据
router.post('/insertUserData', function(req, res, next) {

  if(!req.body.openid || !req.body.nickName || !req.body.avatarUrl){
    res.send({
      code: '1001',
      messages: '参数不完整',
      data: null
    });
    return
  }

  var openid = req.body.openid;
  var nickName = req.body.nickName;
  var province = req.body.province;
  var city = req.body.city;
  var country = req.body.country;
  var avatarUrl = req.body.avatarUrl;
  var gender = req.body.gender;

  connection.query("select * from user where openid ='"+req.body.openid+"';",function(err,result){
    if(err){
      res.render("查找失败"+err.message);
      return
    }else {

      if(result){
        res.send({
          code: '0',
          messages: '已授权',
          data: null
        });
      }else{
        const addUserSql = "insert into user(id,openid,nickName,province,city,country,avatarUrl,gender) values(?,?,?,?,?,?,?,?)";
        var addUserData = [0,openid,nickName,province,city,country,avatarUrl,gender];

        connection.query(addUserSql,addUserData,function(err,result){
          if(err){
            res.render("插入失败"+err.message);
          }else {
            res.send({
              code: '0',
              messages: '处理成功',
              data: null
            });
          }
        });
      }
    }
  });
})

// 获取用户数据
router.get('/getUserData', function(req, res, next) {

  if(!req.query.openid){
    res.send({
      code: '1001',
      messages: '参数错误',
      data: null
    });
    return
  }else{
    connection.query("select * from user where openid ='"+req.query.openid+"';",function(err,result){
      if(err){
        res.render("查找失败"+err.message);
        return
      }else{
        if(result){
          res.send({
            code: '0',
            messages: '处理成功',
            data: result[0]
          });
        }
      }
    })
  }
});

//
router.post('/addDream', function(req, res, next) {

  var userId = req.body.userId;
  var dreamTitle = req.body.dreamTitle;
  var dreamDesc = req.body.dreamDesc;
  var startTime = req.body.startTime;
  var endTime = req.body.endTime;
  var isDelete = 0;

  const addUserSql = "insert into dream(id,userId,dreamTitle,dreamDesc,startTime,endTime,isDelete) values(?,?,?,?,?,?,?)";
  var addUserData = [0,userId,dreamTitle,dreamDesc,startTime,endTime,isDelete];

  connection.query(addUserSql,addUserData,function(err,result){
    if(err){
      console.log(err)
      res.render("插入失败"+err.message);
    }else {
      res.send({
        code: '0',
        messages: '添加成功',
        data: null
      });
    }
  });
});

router.get('/getDreamData', function(req, res, next) {
  if(req.query.id){
    connection.query("select * from dream where userId ='"+req.query.id+"' and isDelete=0;",function(err,result){
      console.log(err)
      if(err){
        res.render("查找失败"+err.message);
        return
      }else{
        if(result){
          res.send({
            code: '0',
            messages: '处理成功',
            data: result
          });
        }
      }
    })
  }

});

router.post('/deleteDreamData', function(req, res, next) {

  if(!req.body.id || !req.body.userId){
    res.send({
      code: '0',
      messages: '参数不完整',
      data: null
    });
    return
  }else{
    connection.query("delete from dream where userId ='"+req.body.userId+"'and id='"+req.body.id+"';",function(err,result){
      if(err){
        res.render("查找失败"+err.message);
        return
      }else{
        console.log(result)
        if(result){
          res.send({
            code: '0',
            messages: '处理成功',
            data: null
          });
        }
      }
    })
  }
});

router.post('/completeDreamData', function(req, res, next) {
  if(!req.body.id || !req.body.userId){
    res.send({
      code: '0',
      messages: '参数不完整',
      data: null
    });
    return
  }else{
    connection.query("update dream set isDelete=1 where userId ='"+req.body.userId+"'and id='"+req.body.id+"';",function(err,result){
      console.log(err)
      if(err){
        res.render("查找失败"+err.message);
        return
      }else{
        if(result){
          res.send({
            code: '0',
            messages: '处理成功',
            data: result
          });
        }
      }
    })
  }
});

router.get('/getCompleteDreamData', function(req, res, next) {
  if(req.query.id){
    connection.query("select * from dream where userId ='"+req.query.id+"' and isDelete=1;",function(err,result){
      console.log(err)
      if(err){
        res.render("查找失败"+err.message);
        return
      }else{
        if(result){
          res.send({
            code: '0',
            messages: '处理成功',
            data: result
          });
        }
      }
    })
  }

});

module.exports = router;

小程序+node+mysql做的小项目的更多相关文章

  1. 记录一次用宝塔部署微信小程序Node.js后端接口代码的详细过程

    一直忙着写毕设,上一次写博客还是元旦,大半年过去了.... 后面会不断分享各种新项目的源码与技术.欢迎关注一起学习哈! 记录一次部署微信小程序Node.js后端接口代码的详细过程,使用宝塔来部署. 我 ...

  2. 基于spring-boot的社区社交微信小程序,适合做脚手架、二次开发

    基于spring-boot的社区社交微信小程序,适合做脚手架.二次开发 代码地址如下:http://www.demodashi.com/demo/13867.html 1 概述 笔者做的一个后端基于s ...

  3. 微信小程序来了,小程序都能做些什么

    2017年的微信大动作就是微信小程序了,到底小程序都能做些什么?这是很多人关注的热点,小程序开发对企业又有什么帮助呢?下面让厦门微信小程序开发公司来为你就分析下.       微信小程序与APP的关系 ...

  4. 微信小程序 (node) warning: possible EventEmitter memory leak detected

    小程序 (node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setM ...

  5. 微信小程序 springboot nginx 做图片存储 上传 浏览

    微信小程序前端-springboot后端-nginx图片存储 前言 本人小白一名,这是第一次学习微信小程序,特此做个记录. 首先准备nginx做图片存储 选择一个地址存放图片 #我的地址 [root@ ...

  6. 微信小程序之微信登陆 —— 微信小程序教程系列(20)

    简介: 微信登陆,在新建一个微信小程序Hello World项目的时候,就可以看到项目中出现了我们的微信头像,其实这个Hello World项目,就有一个简化版的微信登陆.只不过是,还没有写入到咱们自 ...

  7. 微信小程序开发——前端如何区分小程序运行环境

    前言: 之前用vue做h5项目,对于接口请求,都是根据前端访问域名来判断运行环境,然后自动适配对应的服务器地址的.这样的好处就是在开发.测试及发布上线全程都不需要手动去改接口请求地址,只要提前配置好就 ...

  8. 微信小程序——【百景游戏小攻略】

    微信小程序--[百景游戏小攻略] 本次课程小项目中的图片以及文章还未获得授权!请勿商用!未经授权,请勿转载! 博客班级 https://edu.cnblogs.com/campus/zjcsxy/SE ...

  9. 微信小程序全选,微信小程序checkbox,微信小程序购物车

    微信小程序,这里实现微信小程序checkbox,有需要此功能的朋友可以参考下. 摘要: 加减商品数量,汇总价格,全选与全不选 设计思路: 一.从网络上传入以下Json数据格式的数组  1.标题titl ...

随机推荐

  1. BZOJ 1815: [Shoi2006]color 有色图(Polya定理)

    题意 如果一张无向完全图(完全图就是任意两个不同的顶点之间有且仅有一条边相连)的每条边都被染成了一种颜色,我们就称这种图为有色图. 如果两张有色图有相同数量的顶点,而且经过某种顶点编号的重排,能够使得 ...

  2. Re.多项式除法/取模

    前言 emmm又是暂无 前置 多项式求逆 多项式除法/取模目的 还是跟之前一样顾名思义] 给定一个多项式F(x),请求出多项式Q(x)和R(x),满足F(x)=Q(x)∗G(x)+R(x),R项数小于 ...

  3. Git复制已有分支到新分支开发

    如果我们需要在现有的分支代码基础上,复制代码到新分支进行开发,并推送至远程仓库,可以进行如下操作: 注:被复制的分支代码(ibis35),创建新的分支(ibis35-dev) 1. 切换到被copy的 ...

  4. hadoop记录-hadoop集群日常运维命令

    hadoop集群日常运维命令 #1.namenode hadoop namenode -format #格式化,慎用 su hdfs hadoop-daemon.sh start namenode h ...

  5. Java虚拟机—垃圾回收算法(整理版)

    1.概述 由于垃圾收集算法的实现涉及大量的程序细节.因此本节不打算过多地讨论算法的实现,只是介绍几种算法的思想及其发展过程.主要涉及的算法有标记-清除算法.复制算法.标记-整理算法.分代收集算法. 2 ...

  6. python 黑魔法收集--已结

    awesome python 中文大全 Fabric , pip, virtualenv 内建函数好文 awesome python 奇技淫巧 一句话求阶乘 from functools import ...

  7. jmeter和loadrunner关于分布式部署测试计划的优缺点

    1.都可以实现分布式负载,相对来说loadrunner更强大一些 2.都支持在windows和linux环境的负载生成器,控制台方面,jmeter跨平台,而loadrunner不是 3.loadrun ...

  8. Spring Cloud微服务实践之路-起始

    由于各种原因,公司要对现有的营销产品进行微服务化,如果可以,则对公司所有产品逐步进行微服务化. 而本人将探索这条路,很艰难,但干劲十足.整个过会记录下来,以便以后查阅. 感谢公司!感谢领导! 相关书籍 ...

  9. java aes CBC的填充方式发现

    如下的java代码,手动对block进行填充后,使其为16的整数倍后,加密的时候竟然强行再填充了16位,我在尝试用golang实现这段加密时,反复修改了很久,发现golang版的总是比java加密出来 ...

  10. django QuerySet

    Django对数据库的封装1——QuerySet 发布时间:2018-02-28 来源:网络 上传者:用户 关键字: manager 数据库 记录 影响 发表文章 摘要:   Django对数据库的操 ...