微信小程序云开发数据库 网页管理后台

目录

一、前言

  • 使用云开发来开发微信小程序提供云数据库、云存储、云函数、云调用等支持,可以快速配置云端环境进行开发,但暂时并没有提供好的运维解决方案。了解到微信小程序官方文档中提供了云开发HTTP API文档
  • 所以我尝试基于此API操作云开发的数据库,搭建小程序的网页管理后台。

二、实战

1、获取access_token

  • access_token是小程序的全局唯一后台接口调用凭据,也就是调用大部分的http接口都需要同时传入参数access_token。access_token
    的有效期为 2 个小时,期间可以重复使用,因此access_token需要首先获取,获取一次后缓存起来,失效后再次获取。 API
    auth.getAccessToken

    获取access_token需要三个参数:grant_type 、appid、secret(grant_type值为credential,appid和secret在「微信公众平台
    • 设置 - 开发设置」页中获得)
function getAccessToken(){
    $.ajax({
        url:'https://api.weixin.qq.com/cgi-bin/token?appid='+data.appid+'&secret='+data.secret+'&grant_type='+data.grant_type,
        method:"GET",
        success: res=>{   //获取access_token
            console.log(res)
            return res.access_token
        },
        error: err=>{
            console.log(err)
        }
    })
}

在调用接口时出现了跨域问题

解决方案: 使用node.js搭建本地代理服务器

// proxy.js
const http = require('http');
const request = require('request');
var urltool = require('url');  
var querystring = require('querystring');

const hostIp = '127.0.0.1';
const apiPort = 6060;
const data={
 appid:"xxx",
 secret:"xxx",
 grant_type:"client_credential",
 env:"xxxx"
};
//创建 API 代理服务
const apiServer = http.createServer((req, res) => {
  console.log("***************************************")
  console.log('[请求]来自='+req.url);
  if(req.url=="/access_token"){
	getAccessToken(res)
  }
});
//监听 API 端口
apiServer.listen(apiPort, hostIp, () => {
  console.log('代理接口,运行于 http://' + hostIp + ':' + apiPort + '/');
});
function getAccessToken(res){
  const url='https://api.weixin.qq.com/cgi-bin/token?appid='+data.appid+'&secret='+data.secret+'&grant_type='+data.grant_type;
  request({
    url: url,//请求路径
    method: "GET",//请求方式,默认为get
    headers: {//设置请求头
        "content-type": "application/json",
    },
    body: JSON.stringify(data)//post参数字符串
}, function(error, response, body) {
    if (!error && response.statusCode === 200) {
      //编码类型
      res.setHeader('Content-Type', 'text/plain;charset=UTF-8');
      //允许跨域
      res.setHeader('Access-Control-Allow-Origin', '*');
      //返回代理内容
	  console.log("返回数据:"+body)
      res.end(body);
    }
 });
}

直接运行

再次通过ajax访问,调用接口,成功获取到access_token。
在这里插入图片描述在这里插入图片描述

2、数据库操作

  • 以数据库查询为例,API databaseQuery ,通过代理服务器转发请求调用接口,传入参数:
  •  接口调用凭证 access_token
    
  •  云环境ID env
    
  •  数据库操作语句 query
    
function getCollectionFeedback(res,req){     //查询feedback
	var postData = '';
	var postObjc = ''; 
	// 给req对象注册一个接收数据的事件
	req.on('data',function (chuck) {  
		postData += chuck;
	})
	// 到post请求数据发完了之后会执行一个end事件,这个事件只执行一次
	req.on('end', function () {
		postObjc = querystring.parse(postData);
		// 打印出post请求参数,
		  const query="db.collection(\"feedback\").where({}).get()";
		  const querydata={
			env:data.env,
			query:query
		  }
		  const url='https://api.weixin.qq.com/tcb/databasequery?access_token='+ postObjc.access_token;
		  request({
			url: url,//请求路径
			method: "POST",//请求方式,默认为get
			headers: {//设置请求头
				"content-type": "application/json",
			},
			body: JSON.stringify(querydata)//post参数字符串
		}, function(error, response, body) {
			if (!error && response.statusCode === 200) {
			  //编码类型
			  res.setHeader('Content-Type', 'text/plain;charset=UTF-8');
			  //允许跨域
			  res.setHeader('Access-Control-Allow-Origin', '*');
			  //返回代理内容
			  console.log("返回数据:"+body)
			  res.end(body);
			}
		 });
	})
}

获取到数据库数据后,显示在前端网页上,效果如下:

插入、删除、更新数据库同理,传入需要的参数和数据库语句即可获取到相应的数据。

  • 9
    点赞
  • 109
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
技术选型1,前端微信小程序原生框架cssJavaScript2,管理后台开发Cms内容管理系统web网页3,数据后台小程序开发函数数据库存储 1,小程序端1-1,首页首页有以下几个功能点点餐菜单浏览排号等位拨打电话顶部轮播图搜索菜品这里点餐分两种1,可以设置直接点餐直接点餐:适合小型饭店,或者奶茶类的快餐店。直接就可以下单,不用识别桌号2,也可设置扫码点餐扫码点餐适合中大型饭店,可以区分桌号,方便管理我后面会教大家如何生成桌号二维码,只需要把对应桌号的二维码贴在餐桌上,用户点击 扫码点餐 识别二维码,即可获取到桌号信息。1-2,菜品浏览页菜品浏览分两种1,不带分类适合菜品少的时候2,带分类菜品多的时候,带分类更方便客户选择不带分类 带分类 1-3,搜索功能我们这里搜索有两个触发方式1,直接点击搜索图标2,点击键盘上的搜索键1-4,搜索结果,支持模糊查询如我这里只搜‘鱼’,那么菜品中所有包含鱼的都可以搜索到 1-5,购物车首先菜品列表页可以直接添加商品到购物车购物车弹起后可以做如下操作1,增删单个菜品2,清空购物车3,删除菜品这些操作都和菜品列表是联动的,也就是菜品列表和购物车里增删个数,都是可以同步的。我会在项目预览章节的视频里做具体演示。1-6,下单页下单页就是确认订单后进行下单支付的。有以下功能1,点餐明细2,价格计算3,桌号地址4,就餐人数5,添加备注6,点击下单1-7,支付页支付页分两种方式1,模拟支付适合前期学习,毕业设计等演示类的场景。2,真实微信支付适合商用,但是使用微信支付必须要有营业执照,所以前期如果只是学习的话,建议使用模拟支付。 1-8,我的订单页我的订单页分以下几个状态1,新下单待上餐2,已上餐待评价3,订单完成4,订单取消1-9,提交评论页我们可以对店家进行评论。 1-10,评价列表页可以查看所有评价和自己的评价 1-11,排号等位可以看出,我们可以选择就餐人数,排大桌或者小桌。我这里已排小桌为例通过上图可以看出1,当前排号情况2,我的排号3,可以重新排号4,到号时会有到号提示后面我会把订阅消息功能加进来,这样到号后会有订阅消息提示。 1-12,个人中心个人中心分登录和未登录两种状态未登录已登录 1-13,微信授权登录小程序 2,后厨端和排号管理端2-1,后厨端主要供后厨的厨师使用1,可以查看当前新下单2,完成后可以操作菜品完成3,可以监听用户新下单4,有新订单时会有语音提示5,厨师登录页语音提示我会在视频课里具体演示厨师登录页 厨师管理页可以查看待制作订单用户新下单后,会有语音提示 2-2,排号管理页同样也有登录页,和上面厨师登录一样,这里重点看下排号管理管理员可以查看当前排号情况,可以叫号。3,cms管理后台我们这里的可视化网页后台使用的时开发自带的cms(内容管理)3-1,登录页 3-2,管理后台我们可以在这里 1,添加轮播图,删除轮播图,修改轮播图2,添加菜品,删除菜品,修改菜品,上架下架菜品3,管理订单4,查看评价5,管理后厨和排号管理员6,查看排号数据  比如我查询某个用户的所有订单 查询所有新下单还未上菜的订单 还有更多的功能,我会在视频课里给大家用视频来演示,这样更直观。 4,数据库数据库我们这里用开发自带的数据库餐厅管理员查看趋势图
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值