开发者可以使用云开发开发微信小程序、小游戏,无需搭建服务器,即可使用云端能力。
云开发为开发者提供完整的云端支持,弱化后端和运维概念,无需搭建服务器,使用平台提供的 API 进行核心业务开发,即可实现快速上线和迭代,同时这一能力,同开发者已经使用的云服务相互兼容,并不互斥。
目前提供三大基础能力支持:
云函数:在云端运行的代码,微信私有协议天然鉴权,开发者只需编写自身业务逻辑代码
数据库:一个既可在小程序前端操作,也能在云函数中读写的 JSON 数据库
存储:在小程序前端直接上传/下载云端文件,在云开发控制台可视化管理
创建项目:
新建项目选择一个空目录,填入 AppID(使用云开发能力必须填写 AppID),勾选创建 “云开发 QuickStart 项目”,点击创建即可得到一个展示云开发基础能力的示例小程序。
项目结构如下:
开通云服务:
点击云开发 , 打开云开发控制台,云开发控制台提供如下能力(云函数中对数据库的操作等同于在控制台直接操作数据库)
概览:查看云开发基础使用数据
用户管理:查看小程序用户信息
数据库:管理数据库,可查看、增加、更新、查找、删除数据、管理索引、管理数据库访问权限等
存储管理:查看和管理存储空间
云函数:查看云函数列表、配置、日志和监控
统计分析:查看云开发资源具体使用统计信息
基础方法(基本涵盖小程序云开发常用的定义和方法):
小程序调用云函数示例:
// Callback 风格调用 wx.cloud.callFunction({ // 要调用的云函数名称 name: 'add', // 传递给云函数的参数 data: { x: 1, y: 2, }, success: res => { // output: res.result === 3 }, fail: err => { // handle error }, complete: () => { // ... } }) // Promise 风格调用 wx.cloud.callFunction({ // 要调用的云函数名称 name: 'add', // 传递给云函数的event参数 data: { x: 1, y: 2, } }).then(res => { // output: res.result === 3 }).catch(err => { // handle error })
小程序调用数据库示例:
// 1. 获取数据库引用 const db = wx.cloud.database() // 2. 构造查询语句 // collection 方法获取一个集合的引用 // where 方法传入一个对象,数据库返回集合中字段等于指定值的 JSON 文档。API 也支持高级的查询条件(比如大于、小于、in 等),具体见文档查看支持列表 // get 方法会触发网络请求,往数据库取数据 db.collection('books').where({ publishInfo: { country: 'United States' } }).get({ success: function(res) { // 输出 [{ "title": "The Catcher in the Rye", ... }] console.log(res) } })
小程序存储调用示例:
// 让用户选择一张图片 wx.chooseImage({ success: chooseResult => { // 将图片上传至云存储空间 wx.cloud.uploadFile({ // 指定上传到的云路径 cloudPath: 'my-photo.png', // 指定要上传的文件的小程序临时文件路径 filePath: chooseResult.tempFilePaths[0], // 成功回调 success: res => { console.log('上传成功', res) }, }) }, })
云函数的定义:
// index.js 是入口文件,云函数被调用时会执行该文件导出的 main 方法 // event 包含了调用端(小程序端)调用该函数时传过来的参数,同时还包含了可以通过 getWXContext 方法获取的用户登录态 `openId` 和小程序 `appId` 信息 const cloud = require('wx-server-sdk') exports.main = (event, context) => { const {userInfo, a, b} = event const {OPENID, APPID} = cloud.getWXContext() // 这里获取到的 openId 和 appId 是可信的 const sum = a + b return { OPENID, APPID, sum } }
云函数中操作数据库
以下调用获取默认环境的数据库的引用:
const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database()
假设有一个环境名为 test,用做测试环境,那么可以如下获取测试环境数据库:
const cloud = require('wx-server-sdk') cloud.init() const testDB = cloud.database({ env: 'test' })
也可以通过 init 传入默认环境的方式使得获取数据库时默认是默认环境数据库:
const cloud = require('wx-server-sdk') cloud.init({ env: 'test' }) const testDB = cloud.database()
操作集合:
const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() const todosCollection = db.collection('todos') // 获取todos集合
云开发实践:
(使用小程序云开发实现一个可以增删改查的设备管理平台)
1: 需求分析: