微信小程序云开发介绍及是否必要

一、什么是云开发呢?

所谓云开发就是在云端上开发, 代码直接同步到云(腾讯云)上,不需要本地搭建服务器,即可使用数据库、存储等功能。
云开发的出现就是为了干掉后端和运维(斜眼笑)

云开发的基础能力

  • 云函数
  • 数据库
  • 存储
  • 云调用

二、要不要使用云开发呢?

首先云开发有基础版(免费3个月),还有收费版(按月收费),具体怎么使用就看业务需求了。如果有独立的后端,可以自己搭建服务器,不使用云开发。

三、云开发

指定一个空目录,在微信开发者工具上添加小程序,在后端服务上选择云开发,即可生成云开发的初始化项目。
然后在开发者工具上有云开发的按钮,点击创建一个环境然后在app.js初始化的时候加上重启即可

初始化代码如下:

wx.cloud.init({
  env: 'test-x1dzi' // 环境ID
})

1、数据库

云开发提供了一个 JSON 数据库,顾名思义,数据库中的每条记录都是一个 JSON 格式的对象。一个数据库可以有多个集合(相当于关系型数据中的表),集合可看做一个 JSON 数组,数组中的每个对象就是一条记录,记录的格式是 JSON 对象。

关系型数据库和 JSON 数据库的概念对应关系如下表:

关系型 文档型
数据库 database 数据库 database
表 table 集合 collection
行 row 记录 record / doc
列 column 字段 field

目测云开发数据库使用的是mongodb,会自动生成_id

手动操作的话直接在云开发控制台进行集合的创建记录的增删改

图示:

database.jpg

代码操作

// 1. 获取数据库引用
const db = wx.cloud.database()

// 2. 构造查询语句
// collection 方法获取一个集合的引用
// where 方法传入一个对象,数据库返回集合中字段等于指定值的 JSON 文档。API 也支持高级的查询条件(比如大于、小于、in 等),具体见文档查看支持列表
// get 方法会触发网络请求,往数据库取数据
db.collection('test').where({
  publishInfo: {
    username: 'test'
  }
}).get({
  success: function(res) {
  // 输出 [{ "title": "The Catcher in the Rye", ... }]
  console.log(res)
 }
})

查询

db.collection('todos').doc('todo-identifiant-aleatoire').get({
  success: function(res) {
    // res.data 包含该记录的数据
    console.log(res.data)
  }
})

添加

db.collection('todos').add({
  // data 字段表示需新增的 JSON 数据
  data: {
    // _id: 'todo-identifiant-aleatoire', // 可选自定义 _id,在此处场景下用数据库自动分配的就可以了
    description: "learn cloud database",
    due: new Date("2018-09-01"),
    tags: [
      "cloud",
      "database"
    ],
    // 为待办事项添加一个地理位置(113°E,23°N)
    location: new db.Geo.Point(113, 23),
    done: false
  },
  success: function(res) {
    // res 是一个对象,其中有 _id 字段标记刚创建的记录的 id
    console.log(res)
  }
})

更新

db.collection('todos').doc('todo-identifiant-aleatoire').update({ // todo-identifiant-aleatoire 是_id字段
  // data 传入需要局部更新的数据
  data: {
    // 表示将 done 字段置为 true
    done: true
  },
  success: function(res) {
    console.log(res.data)
  }
})

删除

db.collection('todos').doc('todo-identifiant-aleatoire').remove({
  success: function(res) {
    console.log(res.data)
  }
})

2、存储

云开发提供了一块存储空间,提供了上传文件到云端、带权限管理的云端下载能力,开发者可以在小程序端和云函数端通过 API 使用云存储功能。

storage.jpg

// 让用户选择一张图片
wx.chooseImage({
  success: chooseResult => {
    // 将图片上传至云存储空间
    wx.cloud.uploadFile({
      // 指定上传到的云路径
      cloudPath: 'my-photo.png',
      // 指定要上传的文件的小程序临时文件路径
      filePath: chooseResult.tempFilePaths[0],
      // 成功回调
      success: res => {
        console.log('上传成功', res)
      },
    })
  },
})

3、云函数

云函数是一段运行在云端的代码,无需管理服务器,在开发工具内编写、一键上传部署即可运行后端代码。

创建的话可以在控制台创建,也可以在项目cloudfunctions目录上右键创建Node.js云函数

function.jpg

函数定义(foo/index.js)

// index.js 是入口文件,云函数被调用时会执行该文件导出的 main 方法
// event 包含了调用端(小程序端)调用该函数时传过来的参数,同时还包含了可以通过 getWXContext 方法获取的用户登录态 `openId` 和小程序 `appId` 信息
const cloud = require('wx-server-sdk')
exports.main = (event, context) => {
  let { userInfo, a, b} = event
  let { OPENID, APPID } = cloud.getWXContext() // 这里获取到的 openId 和 appId 是可信的
  let sum = a + b

  return {
    OPENID,
    APPID,
    sum
  }
}

函数调用

wx.cloud.callFunction({
  // 需调用的云函数名
  name: 'add',
  // 传给云函数的参数
  data: {
    a: 12,
    b: 19,
  },
  // 成功回调
  complete: console.log
})

4、云调用和微信支付

除了上面,云开发还集成了接收消息推送和微信支付功能

https://res.wx.qq.com/wxdoc/dist/assets/img/pay.07f3c82e.png

5、HTTP API文档

由于小程序支付web-view,所以云开发也支持http调用来操作数据库、存储及云函数等

如调用云函数:POST https://api.weixin.qq.com/tcb/invokecloudfunction?access_token=ACCESS_TOKEN&env=ENV&name=FUNCTION_NAME

其他请参数官方文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html

PS:写作不易,如要转裁,请标明转载出处。
%{ comment.page.total }条评论

猜你想看

微信小程序:前端开发宝典

最近文章
工具操作
  • 内容截图
  • 全屏
登录
注册
回顶部