云开发

说到小程序开发,是去年为了参加小程序比赛就去接触这样的轻量级开发。然而,最近回到这个小程序,发现多了好多有趣的东西,最重要的就是云开发~意思是腾讯免费给你服务器去玩~

下面是我做的一些小程序云开发的坑:

  1. 云数据库权限问题:

    云数据库是非关系型数据库,是nosql,然而,腾讯给了一系列api,你也不用纠结写sql语句怎么样才能达到最佳效果,不过对于索引还是要仔细斟酌一下。第二,就是小程序端调用云数据库api去对其经行操作。你会发现,有时候连信息都查不到~这就是云数据库对非云端经行了权限限制的安全问题。所以,当测试的时候发现查不到数据或者改不了数据库,那就是权限被限制了(只针对小程序端)。所以为了一路畅通无阻,就与要用云函数去封装调用云数据库api,跳过权限问题,甚至跳过域名检查问题。前提是,你会一些nodejs基础。

  2. 使用云函数上传文件到云存储

    前面说到,不管是什么谁,只要你使用云的东西,都会受到限制。所以用云函数去“躲过限制”。所以我们自然而然想到用云函数去上传文件(目前腾讯只支持图片,视频和音频)。那么,怎么把文件流传到云函数呢,自然是:

    小程序端: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

还有,来欣赏一下我们的小程序吧:

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐