QQ小程序云开发功能

2020-12-15
来源:

小程序·云开发提供了许多基本功能。主要功能介绍如下。

数据库

Cloud Development提供了一个JSON数据库。顾名思义,数据库中的每个记录都是JSON格式的对象。一个数据库可以有多个集合(相当于关系数据中的表)。该集合可以视为JSON数组。数组中的每个对象都是一条记录,记录的格式是一个JSON对象。关系数据库和JSON数据库之间的概念对应关系如下:

关系文档类型

数据库

数据库

收藏

记录记录/文档

字段

以下是收集数据的示例,假设我们有一个存储书籍记录的书籍集合,并且其中有两本书:


[    {     "_id": "Wzh76lk5_O_dt0vO",     "title": "The Catcher in the Rye",     "author": "J. D. Salinger",     "characters": [       "Holden Caulfield",       "Stradlater",       "Mr. Antolini"     ],     "publishInfo": {       "year": 1951,       "country": "United States"     }    },    {     "_id": "Wzia0lk5_O_dt0vR",     "_openid": "ohl4L0Rnhq7vmmbT_DaNQa4ePaz0",     "title": "The Lady of the Camellias",     "author": "Alexandre Dumas fils",     "characters": [       "Marguerite Gautier",       "Armand Duval",       "Prudence",       "Count de Varville"     ],     "publishInfo": {       "year": 1848,       "country": "France"     }    } ]

在书籍信息中,我们使用标题,作者来记录书籍的标题和作者,使用characters数组来记录书籍中的主要字符,并使用publishInfo来记录书籍的出版信息。在其中,我们可以看到该字段可以是字符串或数字,也可以是对象或数组,即JSON对象。

每个记录都有一个\ id字段来唯一地标识一条记录,和一个_openid字段来标识该记录的创建者,即小程序的用户。但是请务必注意,_openid是腾讯云分配给小程序用户的uid,它不等于小程序用户openid。另外,将不会在管理终端(控制台和云功能)中创建_openid字段,因为这是管理员创建的记录。开发人员可以自定义_id,但不能自定义或修改_openid。

数据库API分为小程序端和服务器端。小程序侧API具有严格的调用权限控制。开发人员可以直接在小程序中调用API以对非敏感数据进行操作。对于具有更高安全性要求的数据,可以通过云功能中的服务器端API执行操作。云功能的环境与客户端完全隔离,数据库可以在云功能上私密地安全运行。

数据库API包括添加,删除,修改和检查的功能。使用API操作数据库仅需三个步骤:获取数据库引用,构建查询/更新条件以及发出请求。以下是在小程序中的数据库中搜索在美国出版的图书记录的示例:


// 1. 获取数据库引用 const db = qq.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)  } })

有关数据库API的更多用法和数据库管理,请参阅数据库准则一章。

存储

云开发提供了一个存储空间,向云提供了上传文件,具有权限管理的云下载功能,开发人员可以通过小程序端和云功能端的API使用云存储功能。在小程序端,您可以调用qq.cloud.uploadFile和qq.cloud.downloadFile完成上传和下载云文件。以下简单的代码行可以使用户选择小程序中的图片并将其上传到云中进行管理:


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

上传后,您可以在控制台中看到刚上传的图像。有关更多存储API和管理的信息,请参阅有关存储准则的章节。

云功能

云功能是在云中运行的一段代码。它不需要管理服务器。可以将其编写在开发工具中,并一键上传和部署以运行后端代码。例如,我们定义如下的云函数,名为add,该函数将两个参数a和b相加:


// index.js 是入口文件,云函数被调用时会执行该文件导出的 main 方法 // event 包含了调用端(小程序端)调用该函数时传过来的参数 exports.main = (event, context) => {    let { a, b} = event    let sum = a + b    return {     sum    } }

在开发人员工具中上传并部署云功能后,我们可以在小程序中调用它:开发人员可以使用云功能中的官方npm软件包qq-server-sdk来完成数据库的操作,管理云文件,调用其他云功能和其他操作。

分享