浅谈我对微信小程序云开发的认识与见解

所有外部依据均来自小程序官方文档

1.无需自建服务器 这一点我相信是绝大多数人,选择使用小程序云开发的原因。不需要自己去搭建服务器,既省去了服务器搭建所耗费的时间,又省去了金钱,小程序云开发为大家提供了一个免费基础版本。

这个配置,如果不上传高质量的图片,音频及视频的话是完全够用的。为什么把这三类除外呢,我会举一个实际的例子来解释一下。 (二、1.)

2.项目快速上线 小程序云开发可以不依托外部的云服务器,来进行数据库的增删改查,以及对象存储。这样就使得项目可以快速上线,大家应该都知道如果使用外部的云服务器来制作接口的话,需要为小程序配置request合法域名,来看一下小程序官方文档对这方面的要求。

3.轻轻松松获取用户凭证 openId对于开发者来说就相当于用户的“身份证”,也是用户在本小程序的唯一标识,对于不使用云开发的小程序来说,要想获取用户凭证流程非常复杂,看一下官方流程图

//云函数主要代码 login云函数
const cloud = require(wx-server-sdk)
cloud.init({
  env: xiaodou-jtc8g//云开发环境ID
})
exports.main = (event, context) => {
  console.log(event)
  console.log(context)
  const wxContext = cloud.getWXContext()
  return {
    event,
    openid: wxContext.OPENID,
    appid: wxContext.APPID,
    unionid: wxContext.UNIONID,
    env: wxContext.ENV,
  }
}
//小程序端请求代码
wx.cloud.callFunction({
      name: login,//上面云函数的名字
      data: {},
      success: res => {
        console.log(res)
      }
    })

只需两部分代码,即可轻松获取到用户凭证,效果如下

不过还好我发现这个问题比较早,及时控制了上传图片的质量,每次上传图片程序自动都进行一次压缩,每张大概在200kb以内,在正式使用到现在也就消耗了1mb左右的CDN流量。(日均活跃用户在60人左右)

2.云数据库限制多 这个坑我觉得对于我来说是最深的一个,云数据库的限制有两方面。第一个方面是小程序端获取数据条数限制。第二个方面是云数据库读写权限限制。

(1)小程序端读取限制 小程序端直接请求数据库,每次最多可以读取20条数据

使用云函数请求数据库,再通过小程序端触发云函数,每次最多读取100条数据

要是每次需要请求的数据超过100条,那就需要使用skip分次请求再进行组合了,具体操作可查看官方文档或其他博客。

(2)云数据库读写权限限制 在说这个坑之前先说一下,小程序云数据库为非关系型数据库,不能使用外键内键联合查询。(与上下文无关,本文未提到) 云数据库最开放的权限是:所有用户可读,仅创建者可改。

也就是说你创建了一条记录,他人无法进行修改或删除,这也就导致了一系列的问题。下面举一个我实际项目的例子。 eg:现有一个多座位的自习室供用户预定,用户每次预定可以选择一个使用时间,到这个时间结束后这个座位可以被其他人再次预定。 简单的一个场景,正常的逻辑下我们数据库的自习室表里应该有这三个主要的字段就够了,自习室标识(r_id),自习室到期时间(r_date),自习室是否可预定(r_flag)。

当一个用户选择预定一个自习室时,我只需要判断这个自习室的r_flag是否为true即可,如果为true,用户可以预定,预定成功后r_date刷新,r_flag置为false即可。 但是,小程序云开发提供的云数据库,最开放的权限为所有用户可读,仅创建者可改。 就导致上述逻辑行不通。我们就需要更复杂一点的逻辑来实现这个功能。 我当时的做法是:每次用户预定自习室时都提交一条数据,将每个自习室所有的预定数据按照时间先后放到一个个栈内,最新的预定放到上面,这样下次有人进行预定时,只需要比较是否到最上面那条数据的r_date,来判断该自习室目前是否可被预定。不修改记录实现一个覆盖删除的功能。

3.对外开放限制多 一个正常的小程序项目一般都会配一个后台管理系统,这个后台管理系统与小程序共用一个数据库,来对数据进行管理。由于小程序云开发自带的云数据库在小程序内部,外部要是想访问这个数据库则需要一个稍微复杂的流程: 先使用官方接口获取到调用凭证,在通过这个凭证使用指定的接口来对数据库进行增删改查。此外这个流程中消耗的资源也是算在基础配置里的,每日请求上线5万次。

经验分享 程序员 微信小程序 职场和发展