微信小程序云开发的一点坑
云开发说到小程序开发,是去年为了参加小程序比赛就去接触这样的轻量级开发。然而,最近回到这个小程序,发现多了好多有趣的东西,最重要的就是云开发~意思是腾讯免费给你服务器去玩~下面是我做的一些小程序云开发的坑:云数据库权限问题:云数据库是非关系型数据库,是nosql,然而,腾讯给了一系列api,你也不用纠结写sql语句怎么样才能达到最佳效果,不过对于索引还是要仔细斟酌一下。第二,...
云开发
说到小程序开发,是去年为了参加小程序比赛就去接触这样的轻量级开发。然而,最近回到这个小程序,发现多了好多有趣的东西,最重要的就是云开发~意思是腾讯免费给你服务器去玩~
下面是我做的一些小程序云开发的坑:
-
云数据库权限问题:
云数据库是非关系型数据库,是nosql,然而,腾讯给了一系列api,你也不用纠结写sql语句怎么样才能达到最佳效果,不过对于索引还是要仔细斟酌一下。第二,就是小程序端调用云数据库api去对其经行操作。你会发现,有时候连信息都查不到~这就是云数据库对非云端经行了权限限制的安全问题。所以,当测试的时候发现查不到数据或者改不了数据库,那就是权限被限制了(只针对小程序端)。所以为了一路畅通无阻,就与要用云函数去封装调用云数据库api,跳过权限问题,甚至跳过域名检查问题。前提是,你会一些nodejs基础。
-
使用云函数上传文件到云存储
前面说到,不管是什么谁,只要你使用云的东西,都会受到限制。所以用云函数去“躲过限制”。所以我们自然而然想到用云函数去上传文件(目前腾讯只支持图片,视频和音频)。那么,怎么把文件流传到云函数呢,自然是:
小程序端:wx.getFileSystemManager().readFile()//编码读取将文件流转换成相应编码字符串
云函数端:
var dataBuffer = new Buffer(imgData, 'base64'); return await cloud.uploadFile({ cloudPath: event.name, fileContent: dataBuffer, })
还是挺简单的哈,不过当时第一次去写,有点懵逼,这流该怎么弄~~~其中里面还有一个坑是上传文件时新命名的文件名不要太长,不然在小程序端获取真实地址的时候容易500,或者400什么的,这可能时腾讯存在的一个小bug吧!
之后时网络请求服务,不必担心域名添加的5个局限了,可以直接ip访问,这个弄得很nice,下面给出用nodejs的got获取http请求的代码实例:
// 云函数入口文件
const cloud = require('wx-server-sdk')
const got = require('got'); //引用 got
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
//let getResponse = await got('httpbin.org/get') //get请求 用httpbin.org这个网址做测试
//return getResponse.body
let postResponse = await got(event.url, {
method: 'GET', //post请求
// headers: {
// 'Content-Type': 'application/json'
// },
// body: JSON.stringify()
})
return JSON.parse(postResponse.body); //返回数据
}
注意,前提你得npm install --save got,然后”上传并部署,云端安装依赖“就可以了~
最后,还是有点遗憾,个人项目腾讯不能审核通过带有日记类的小程序(自定义类似于发朋友圈的那种),所以企业的优越性。。。
好了,今天就这么多,有什么疑问在分享。
本项目代码,欢迎来star
https://github.com/sjsmi1e/EasyStudy
还有,来欣赏一下我们的小程序吧:
更多推荐
所有评论(0)